코딩테스트 대비/BOJ

[Baekjoon/Python] 10866번: 덱 - 효과는 굉장했다!

bluetag_boy 2021. 10. 30. 02:47
반응형
 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

알고리즘 분류

  • 자료 구조

 

SOLUTION

from collections import deque
import sys

N = int(sys.stdin.readline())
deque_list = deque([])

for _ in range(N):
    cmd = sys.stdin.readline().split()
    order = cmd[0] # 명령어

    if order == "push_front":
        deque_list.appendleft(cmd[1]) # deque에 있는 appendleft() 함수를 이용해 입력받은 수를 왼쪽에 삽입

    if order == "push_back":
        deque_list.append(cmd[1])

    if order == "pop_front":
        if len(deque_list) != 0:
            print(deque_list.popleft()) # deque에 있는 popleft() 함수를 이용해 가장 왼쪽에 있는 수 제거

        else:
            print(-1)

    if order == "pop_back":
        if len(deque_list) != 0:
            print(deque_list.pop())
        
        else:
            print(-1)

    if order == "size":
        print(len(deque_list))
    
    if order == "empty":
        if len(deque_list) == 0:
            print(1)

        else:
            print(0)

    if order == "front":
        if len(deque_list) == 0:
            print(-1)

        else:
            print(deque_list[0])
     
    if order == "back":
        if len(deque_list) == 0:
            print(-1)

        else:
            print(deque_list[-1])