BOJ_10845 큐
- TOC {:toc}
이 글은 백준 온라인 저지의 10845번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.04.24
메모리 | 시간 | 코드 길이 |
---|---|---|
37676 KB | 96 ms | 470 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
코딩 | 14:26:37 | 14:42:13 | |
디버깅 | 14:42:17 | 14:48:05 |
import sys
from collections import deque
input = sys.stdin.readline
q = deque([])
for _ in range(int(input())):
IN = input().split()
m = IN[0]
if m == "push":
q.append(int(IN[1]))
elif m == "pop":
print(q.popleft() if q else -1)
elif m == "size":
print(len(q))
elif m == "empty":
print(1 if not q else 0)
elif m == "front":
print(q[0] if q else -1)
else:
print(q[-1] if q else -1)
아이디어 & 풀이
큐를 구현하기 위해 leftpop
과 leftappend
를 지원하는 collections
라이브러리의 deque
를 사용한다.
- 파이썬에서 큐(queue) 자료 구조 사용하기 by Dale Seo
- collections.deque() by Python Documentation
디버그
front
,back
에서 원소가 없을 때-1
을 출력하는 예외 처리를 안해서 틀렸다.
피드백
deque
를 쓰지 않고pop
에 인덱스0
을 전달해서 제거하는 경우가 많았다.
참고 답안
import sys
stack = []
for _ in range(int(input())):
cmd, *num = sys.stdin.readline().split()
if cmd == 'push':
stack.append(int(num[0]))
elif cmd == 'pop':
# pop(0)로 첫 번째 원소를 제거한다.
print(stack.pop(0) if stack else -1)
elif cmd == 'front':
print(stack[0] if stack else -1)
elif cmd == 'back':
print(stack[-1] if stack else -1)
elif cmd == 'size':
print(len(stack))
elif cmd == 'empty':
print(0 if stack else 1)
-
ps-python