import sys
from collections import deque

def push(queue, x):
    queue.append(x)
    
def pop(deque):
    return deque.popleft() if deque else -1

def size(queue):
    return len(queue)

def empty(queue):
    return 1 if not queue else 0

def front(queue):
    return queue[0] if queue else -1

def back(queue):
    return queue[-1] if queue else -1

deque = deque()

N = int(sys.stdin.readline().rstrip())

for _ in range(N):
    order = sys.stdin.readline().rstrip().split()
    
    command = order[0]
    
    if(command == "push"):
        push(deque, order[1])
    elif(command == "pop"):
        sys.stdout.write(str(pop(deque)) + "\n")
    elif(command == "size"):
        sys.stdout.write(str(size(deque)) + "\n")
    elif(command == "empty"):
        sys.stdout.write(str(empty(deque)) + "\n")
    elif(command == "front"):
        sys.stdout.write(str(front(deque)) + "\n")
    elif(command == "back"):
        sys.stdout.write(str(back(deque)) + "\n")

문제는 쉬운데 역시나 시간 맞추기가 힘든 문제.

우리가 잘 알고 있는 pop(0)은 빼고 다시 옮기는 O(n)의 시간이 소요되기 때문에 해당 문제에서는 바로 시간초과가 발생한다.

pop 부분을 이것저것 손봐서 해보긴했지만, 시간 더 소비하지 않고 다른 사람처럼 deque를 사용했다....

결론: collections의 deque 도움을 받자.

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 2680번(python)  (0) 2020.05.03
백준 2164번(python)  (0) 2020.05.03
백준 4949번(python)  (0) 2020.05.02
백준 10773번(python)  (0) 2020.05.02
백준 2004번(python)  (0) 2020.04.28