본문 바로가기
백준 풀이

[백준/BOJ] - 10866번 python 풀이 - deque, 덱 활용

by 반오십 코린이 2022. 11. 22.
728x90


Key Point

1. 덱을 사용하는 문제이기 때문에 실제로 덱을 사용하여 풀면 좋다.(시간 복잡도 면에서)

2. 정수를 저장하는 덱이라고 정의했기 때문에 명령어를 입력받을 때 str로 입력 받고 

int형으로 변경해주는 작업이 필요하다.

3. 명령어 수행 하나가 종료되면 입력 받는 list를 비어주자. 

 


import sys
from collections import deque

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

for _ in range(N):
    ord = list(sys.stdin.readline().split())
    if len(ord) == 2:
        if ord[0] == 'push_front':
            queue.appendleft(int(ord[1])) #좌측(앞)에 삽입
        elif ord[0] == 'push_back':
            queue.append(int(ord[1])) #우측(뒤)에 삽입
    else: # 길이가 1일 경우
        if ord[0] == 'pop_front':
            if len(queue) == 0:
                print(-1)
            else:
                print(queue.popleft())
        elif ord[0] == 'pop_back':
            if len(queue) == 0:
                print(-1)
            else:
                print(queue.pop())
        elif ord[0] == 'size':
            print(len(queue))
        elif ord[0] == 'empty':
            if len(queue) == 0:
                print(1)
            else:
                print(0)
        elif ord[0] == 'front':
            if len(queue) !=0:
                print(queue[0])
            else:
                print(-1) 
        elif ord[0] == 'back':
            if len(queue) !=0:
                print(queue[-1])
            else:
                print(-1)
        ord.clear()
728x90