sm 기술 블로그

157. 18258(큐) - 파이썬 본문

문제/백준_파이썬

157. 18258(큐) - 파이썬

sm_hope 2022. 7. 25. 20:54
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])
Comments