https://www.acmicpc.net/problem/18258

큐에 개념에 대해 알아보는 문제
import sys
n = int(input())
queue = []
for i in range(n):
com = sys.stdin.readline().split()
if com[0] == 'push':
queue.append(com[1])
elif com[0] == 'pop':
if len(queue) == 0:
print(-1)
else:
print(queue.pop(0))
elif com[0] == 'size':
print(len(queue))
elif com[0] == 'empty':
if len(queue) == 0:
print(1)
else:
print(0)
elif com[0] == 'front':
if len(queue) == 0:
print(-1)
else:
print(queue[0])
elif com[0] == 'back':
if len(queue) == 0:
print(-1)
else:
print(queue[-1])
리스트를 활용하여 풀었지만 시간 초과가 났다.
찾아보니 deque을 활용하여 푼 사례들이 있었다. 이참에 deque에 대해 공부하고 정리해보았다.
deque 정리본
import sys
from collections import deque
n = int(input())
queue = deque()
for i in range(n):
com = sys.stdin.readline().split()
if com[0] == 'push':
queue.append(com[1])
elif com[0] == 'pop':
if len(queue) == 0:
print(-1)
else:
print(queue.popleft())
elif com[0] == 'size':
print(len(queue))
elif com[0] == 'empty':
if len(queue) == 0:
print(1)
else:
print(0)
elif com[0] == 'front':
if len(queue) == 0:
print(-1)
else:
print(queue[0])
elif com[0] == 'back':
if len(queue) == 0:
print(-1)
else:
print(queue[-1])
deque의 popleft() 등의 함수를 활용하여 풀면 시간초과가 나지않는다.
deque의 시간 복잡도는 O(1)