sm 기술 블로그
157. 18258(큐) - 파이썬 본문
from collections import deque
import sys
input = sys.stdin.readline
N = int(input())
queue = deque([])
result = []
for _ in range(N):
tmp = input().split()
if len(tmp) == 2:
S = tmp[0]
num = tmp[1]
else:
S = tmp[0]
if S == "push":
queue.append(num)
elif S == "pop":
if not queue:
result.append(str(-1))
else:
result.append(str(queue.popleft()))
elif S == "size":
result.append(str(len(queue)))
elif S == "empty":
if not queue:
result.append(str(1))
else:
result.append(str(0))
elif S == "front":
if not queue:
result.append(str(-1))
else:
result.append(queue[0])
elif S == "back":
if not queue:
result.append(str(-1))
else:
result.append(queue[-1])
print("\n".join(result))
문제요약
- push X: 정수 X를 큐에 넣는 연산이다.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 큐에 들어있는 정수의 개수를 출력한다.
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
설명
간단한 문제이다.
파이썬에서는 기본 리스트는 O(N), dequeue는 O(1)의 시간복잡도를 가지고 있다.
- push X: 정수 X를 큐에 넣는 연산이다.
if S == "push":
queue.append(num)
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
elif S == "pop":
if not queue:
result.append(str(-1))
else:
result.append(str(queue.popleft()))
- size: 큐에 들어있는 정수의 개수를 출력한다.
elif S == "size":
result.append(str(len(queue)))
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
elif S == "empty":
if not queue:
result.append(str(1))
else:
result.append(str(0))
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
elif S == "front":
if not queue:
result.append(str(-1))
else:
result.append(queue[0])
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
elif S == "back":
if not queue:
result.append(str(-1))
else:
result.append(queue[-1])
'문제 > 백준_파이썬' 카테고리의 다른 글
159. 11866(요세푸스 문제 0) - 파이썬 (0) | 2022.07.26 |
---|---|
158. 2164(카드2) - 파이썬 (0) | 2022.07.26 |
156. 17298(오큰수) - 파이썬 (0) | 2022.07.25 |
155. 1874(스택 수열) - 파이썬 (0) | 2022.07.22 |
154. 4949(균형잡힌 세상) - 파이썬 (0) | 2022.07.22 |
Comments