sm 기술 블로그

161. 10866(덱) - 파이썬 본문

문제/백준_파이썬

161. 10866(덱) - 파이썬

sm_hope 2022. 7. 27. 08:34
from collections import deque
import sys
input = sys.stdin.readline

N = int(input())
queue = deque([])
result = []

for _ in range(N):
    tmp = list(input().split())
    S = ''
    num = 0
    if len(tmp) == 1:
        S = tmp[0]
    else:
        S = tmp[0]
        num = int(tmp[1])

    if S == 'push_back':
        queue.append(num)
    elif S == 'push_front':
        queue.appendleft(num)
    elif S == 'pop_front':
        if queue:
            result.append(str(queue.popleft()))
        else:
            result.append("-1")
    elif S == 'pop_back':
        if queue:
            result.append(str(queue.pop()))
        else:
            result.append("-1")
    elif S == 'size':
        result.append(str(len(queue)))
    elif S == 'empty':
        if queue:
            result.append("0")
        else:
            result.append("1")
    elif S == 'front':
        if queue:
            result.append(str(queue[0]))
        else:
            result.append("-1")
    elif S == 'back':
        if queue:
            result.append(str(queue[-1]))
        else:
            result.append("-1")

print("\n".join(result))

문제요약

  • push_front X: 정수 X를 덱의 앞에 넣는다.
  • push_back X: 정수 X를 덱의 뒤에 넣는다.
  • pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 덱에 들어있는 정수의 개수를 출력한다.
  • empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
  • front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.

설명

  • push_front X: 정수 X를 덱의 앞에 넣는다.
    if S == 'push_back':
        queue.append(num)
  • push_back X: 정수 X를 덱의 뒤에 넣는다.
    elif S == 'push_front':
        queue.appendleft(num)
  • pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    elif S == 'pop_front':
        if queue:
            result.append(str(queue.popleft()))
        else:
            result.append("-1")
  • pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    elif S == 'pop_back':
        if queue:
            result.append(str(queue.pop()))
        else:
            result.append("-1")
  • size: 덱에 들어있는 정수의 개수를 출력한다.
    elif S == 'size':
        result.append(str(len(queue)))
  • empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
    elif S == 'empty':
        if queue:
            result.append("0")
        else:
            result.append("1")
  • front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    elif S == 'front':
        if queue:
            result.append(str(queue[0]))
        else:
            result.append("-1")
  • back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    elif S == 'back':
        if queue:
            result.append(str(queue[-1]))
        else:
            result.append("-1")
Comments