[백준 10866] 덱

코뉴·2021년 8월 5일
0

백준🍳

목록 보기
39/149

https://www.acmicpc.net/problem/10866

🥚문제


🥚입력/출력


🍳코드

import sys
from collections import deque

# 덱
deq = deque()

# 비어있는지 확인하는 함수
def isEmpty():
    global deq
    if len(deq) > 0:
        return 0
    else:
        return 1

# 명령어를 실행하는 함수
def do_cmd(*args):
    global deq

    if len(args) == 1:
        cmd = args[0]

        if cmd == "pop_front":
            # 덱의 가장 앞에 있는 수를 빼고 그 수를 출력
            # 만약 덱에 들어있는 정수가 없는 경우에는 -1
            if isEmpty():
                print(-1)
            else:
                print(deq.popleft())

        elif cmd == "pop_back":
            # 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력
            # 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
            if isEmpty():
                print(-1)
            else:
                print(deq.pop())

        elif cmd == "size":
            # 덱에 들어있는 정수의 개수 출력
            print(len(deq))

        elif cmd == "empty":
            # 덱이 비어 있으면 1을, 아니면 0을 출력
            print(isEmpty())

        elif cmd == "front":
            # 덱의 가장 앞에 있는 정수를 출력. 덱에 들어있는 정수가 없으면 -1
            if isEmpty():
                print(-1)
            else:
                print(deq[0])

        elif cmd == "back":
            # 덱의 가장 뒤에 있는 정수를 출력. 덱에 들어있는 정수가 없으면 -1
            if isEmpty():
                print(-1)
            else:
                print(deq[-1])

    else:
        cmd = args[0]
        num = args[1]
        if cmd == "push_front":
            # 정수 X를 덱의 앞에 넣는다
            deq.appendleft(num)
        elif cmd == "push_back":
            # 정수 X를 덱의 뒤에 넣는다
            deq.append(num)



input = sys.stdin.readline

n = int(input())

for _ in range(n):
    # 명령어를 저장하는 cmd
    cmd = ""
    # 주어지는 수를 저장하는 num
    num = 0

    in_data = input().split()
    if len(in_data) == 1:
        cmd = in_data[0]
        do_cmd(cmd)
    else:
        cmd = in_data[0]
        num = int(in_data[1])
        do_cmd(cmd, num)

🧂아이디어

  • 파이썬 deque 복습과
  • 함수 인자에 *args를 썼다는 것에 의미가 있음!
profile
코뉴의 도딩기록

0개의 댓글