꾸준히 합시다
백준 파이썬 18258번: 큐 2 본문
문제 유형: 자료 구조, 큐
# Solution 1 - 시간 초과
import sys
input = sys.stdin.readline
arr = []
for _ in range(int(input())):
cmd = list(map(str, input().split()))
if cmd[0] == "push":
arr.append(int(cmd[1]))
elif cmd[0] == "pop":
if arr:
print(arr.pop(0))
else:
print(-1)
elif cmd[0] == "size":
print(len(arr))
elif cmd[0] == "empty":
if arr:
print(0)
else:
print(1)
elif cmd[0] == "front":
if arr:
print(arr[0])
else:
print(-1)
elif cmd[0] == "back":
if arr:
print(arr[-1])
else:
print(-1)
# Solution 2
import sys
from collections import deque
input = sys.stdin.readline
arr = deque()
for _ in range(int(input())):
cmd = list(map(str, input().split()))
if cmd[0] == "push":
arr.append(int(cmd[1]))
elif cmd[0] == "pop":
if arr:
print(arr.popleft())
else:
print(-1)
elif cmd[0] == "size":
print(len(arr))
elif cmd[0] == "empty":
if arr:
print(0)
else:
print(1)
elif cmd[0] == "front":
if arr:
print(arr[0])
else:
print(-1)
elif cmd[0] == "back":
if arr:
print(arr[-1])
else:
print(-1)
deque를 사용하지 않고 풀었더니 시간 초과가 떴다. deque로 구현하여 popleft() 함수로 pop()을 대체하고, 혹시 몰라 PyPy3로 제출하였더니 통과되었다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 10798번: 세로읽기 (0) | 2021.03.16 |
---|---|
백준 파이썬 1032번: 명령 프롬프트 (0) | 2021.03.15 |
백준 파이썬 1157번: 단어 공부 (0) | 2021.03.11 |
백준 파이썬 9506번: 약수들의 합 (0) | 2021.03.10 |
백준 파이썬 9012번: 괄호 (0) | 2021.03.10 |
Comments