코딩 테스트 문제 풀이
백준 파이썬 18258번: 큐 2
tturbo0824
2021. 3. 11. 10:08
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
문제 유형: 자료 구조, 큐
# 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로 제출하였더니 통과되었다.