알고리즘/백준
백준 18258
남승현
2023. 10. 18. 16:07
- 리스트를 이용해서 큐를 구현하려고 했으나 시간 초과 오류가 발생했다.
-> 리스트로 선언해서 pop(0)를 하게 되면, 첫 번째 요소를 pop 하고나서 나머지 요소들의 인덱스를 1칸씩 당기는 과정에서 O(n)의 계산량이 발생해서
-> deque을 사용하는 게 좋다고 한다 ( deque는 앞,뒤에서 데이터 처리할 수 있는 양방향 자료형이라서)
양방향이기에 스택으로 써도 되고 큐처럼 써도 된다고 한다.
참고로 deque 사용하려면 모듈 import 해야함 + deque에서 맨 앞의 요소 출력하는 함수: .popleft()
*요약 :리스트에서 맨 앞의 원소를 반복적으로 출력할 일 있으면 큐보다 덱 쓰는 게 좋다!
import sys
from collections import deque
n=int(input())
q=deque()
for _ in range(n):
a=sys.stdin.readline().split()
if a[0]=='push':
q.append(a[1])
elif a[0]=='pop':
if q:
print(q.popleft())
else:
print(-1)
elif a[0]=='size':
print(len(q))
elif a[0]=='empty':
if not q:
print(1)
else:
print(0)
elif a[0]=='front':
if q:
print(q[0])
else:
print(-1)
elif a[0]=='back':
if q:
print(q[-1])
else:
print(-1)
cf) deq.appendleft() : 원소를 맨앞에 집어넣음