728x90
문제
풀이
import sys
from collections import deque
t= int(sys.stdin.readline())
que = deque() # 빈 큐 만들기
for i in range(t):
command=sys.stdin.readline().split()
if command[0]=='push':
que.append(command[-1])
elif command[0]=='pop':
if not que:
print(-1)
else:
print(que.popleft())
elif command[0]=='size':
print(len(que))
elif command[0]=='empty':
if not que:
print(1)
else:
print(0)
elif command[0]=='front':
if not que:
print(-1)
else:
print(que[0])
elif command[0]=='back':
if not que:
print(-1)
else:
print(que[-1])
deque함수를 사용하면 기존에 list로 큐를 구현하는 것보다 시간복잡도를 대폭 줄일 수 있다.
리스트의 경우 pop()하면 뒤의 원소들이 이동하기 때문에 시간복잡도가 O(n)인데,
Deque의 경우 리스트 하나하나가 객체로 이루어진 Double linked list로 구현되어 있기 때문에
양 끝의 추가, 삭제 (큐,스택)가 시간복잡도 O(0)을 만족하게 된다.
'PS' 카테고리의 다른 글
[백준] 2108번 : 통계학(counter)- 파이썬[Python] (0) | 2022.01.10 |
---|---|
[백준] 5430번 : AC(덱)- 파이썬[Python] (0) | 2022.01.10 |
[백준] 1874번 : 스택 수열(스택)- 파이썬[Python] (0) | 2022.01.08 |
[백준] 17298번 : 오큰수(스택)- 파이썬[Python] (0) | 2022.01.05 |
[백준] 1929번 : 소수 구하기(에라토스테네스의 체)- 파이썬[Python] (0) | 2022.01.04 |
댓글