jyamethyst21 님의 블로그

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

CODING 💻

백준 10866번- '덱' (PYTHON 풀이)

jyamethyst21 2025. 12. 18. 00:15

문제:

 

이전에 스택, 큐, 덱 문제를 풀었는데 비슷한 유형의 문제가 남아있다. 아무래도 시간초과를 발생시키는 것에 차이가 있지 않을까싶다. 설명이 잘 나와있으니 추가 설명은 생략하겠다! 

 

풀이:

from collections import deque

N = int(input())
q = deque()

for i in range(N):
    m = input().split()
    if m[0] == 'push_front':
        q.appendleft(int(m[1]))
    elif m[0] == 'push_back':
        q.append(int(m[1]))
    elif m[0] == 'pop_front':
        if len(q) == 0:
            print(-1)
        else:
            k1 = q.popleft()
            print(k1)
    elif m[0] == 'pop_back':
        if len(q) == 0:
            print(-1)
        else:
            k2 = q.pop()
            print(k2)
    elif m[0] == 'size':
        print(len(q))
    elif m[0] == 'empty':
        if len(q) == 0:
            print(1)
        else:
            print(0)
    elif m[0] == 'front':
        if len(q) == 0:
            print(-1)
        else:
            print(q[0])
    elif m[0] == 'back':
        if len(q) == 0:
            print(-1)
        else:
            print(q[-1])

좀 더 간단하게 푸는 방법이 있으려나?

일단 필자는 문제 설명 그대로 그냥 코드로 바로 구현했다.

상기 코드대로 python3 실행하면 시간초과가 나는데 pypy3로 하게 되면 문제 없이 잘 통과된다.

python3로 해결하고 싶다면, import sys 후 readline()으로 입력받으면 시간초과가 사라질 것이다.