jyamethyst21 님의 블로그

백준 28279번- '덱 2' (PYTHON 풀이) 본문

CODING 💻

백준 28279번- '덱 2' (PYTHON 풀이)

jyamethyst21 2025. 10. 28. 00:00

문제:

 

덱과 관련된 문제이다. 덱 역시 스택, 큐와 같은 자료구조로, 스택과 큐 역할을 전부 할 수 있는 자료구조라고 보면 된다.

최근에 많이 사용했던 collections 라이브러리 불러와서 사용하면 될 것 같고, 잘 모르더라도 설명 그대로 코드를 작성하면 쉽게 풀 수 있을 것이다.

 

풀이:

from collections import deque
import sys

N = int(input())
dq = deque()

for i in range(N):
    a = sys.stdin.readline().split()
    if a[0] == '1':
        dq.appendleft(int(a[1]))
    elif a[0] == '2':
        dq.append(int(a[1]))
    elif a[0] == '3':
        if not dq:
            print(-1)
        else:
            d = dq.popleft()
            print(d)
    elif a[0] == '4':
        if not dq:
            print(-1)
        else:
            q = dq.pop()
            print(q)
    elif a[0] == '5':
        print(len(dq))
    elif a[0] == '6':
        if not dq:
            print(1)
        else:
            print(0)
    elif a[0] == '7':
        if not dq:
            print(-1)
        else:
            print(dq[0])
    elif a[0] == '8':
        if not dq:
            print(-1)
        else:
            print(dq[-1])

특별하게 알아야 하는 것은 없고 이전에 deque 불러와서 썼던 것처럼 이를 활용해서 바로 코드로 짜면된다.

pop, popleft, append, appendleft 메서드 정도만 알면 되는데 pop은 끝자리 삭제, popleft는 맨 앞자리 삭제, append는 맨 끝에 값 추가, appendleft는 맨 앞에 값 추가를 하는 메서드이다. 이를 활용하면 문제 그대로 작성할 수 있고 시간 초과도 없이 잘 풀린다!