본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]18258번 큐2

by 현장 2021. 8. 18.

-코드

from collections import deque
from sys import stdin
r = deque()
n = int(stdin.readline())
for i in range(n):
    a = stdin.readline().split()
    if a[0] == 'push':
        r.append(a[1])
    elif a[0] == 'pop':
        if len(r) == 0:
            print(-1)
        else:
            print(r.popleft())
    elif a[0] == 'size':
        print(len(r))
    elif a[0] == 'empty':
        if len(r) == 0:
            print(1)
        else:
            print(0)
    elif a[0] == 'front':
        if len(r) == 0:
            print(-1)
        else:
            print(r[0])
    elif a[0] == 'back':
        if len(r) == 0:
            print(-1)
        else:
            print(r[-1])

예전에 비슷한 문제를 풀어서 리스트로 받아서 출력하는 것으로 했으나 시간 초과가 생겼습니다. 그래서 이유를 찾아보니 pop(0)를 사용해서 리스트의 값을 제거하면서 출력할 때 원소를 한 칸씩 밀어내는 시간이 소요되어 시간이 더 걸린 다는 것을 알고 deque를 사용하여 해결을 하였습니다.