본문 바로가기

Baekjoon

[Baekjoon]백준 28279 덱 2(실버 4) - Python

문제설명
예제

문제를 살펴보면 18258 큐2 문제와 비슷하지만 이를 큐가 아닌 덱으로 표현한다는 차이점이 존재한다

몇번 입력받을지 int(input())을 통해 입력받고 for문을 통해 명령어를 받아온다

여기서 유의할 점은 1, 2 가 입력될 경우 뒤의 숫자도 입력을 받아야하기 때문에 

split()을 이용하여 받아주어야한다

그리고 문제의 조건에 맞게 코드를 작성하면 되는데, deque모듈은 appendleft(), append(), pop(), popleft()를 사용하면

덱의 특징인 앞에서 삽입 삭제, 뒤에서 삽입 삭제가 모두 이루어질 수 있다

import sys
from collections import deque

n = int(input())
deq = deque()

for _ in range(n):
    cmd = sys.stdin.readline().split()
    if cmd[0] == '1':
        deq.appendleft(cmd[1])
    elif cmd[0] == '2':
        deq.append(cmd[1])
    elif cmd[0] == '3':
        if deq:
            print(deq.popleft())
        else:
            print(-1)
    elif cmd[0] == '4':
        if deq:
            print(deq.pop())
        else:
            print(-1)
    elif cmd[0] == '5':
        print(len(deq))
    elif cmd[0] == '6':
        if deq:
            print(0)
        else:
            print(1)
    elif cmd[0] == '7':
        if deq:
            print(deq[0])
        else:
            print(-1)
    elif cmd[0] == '8':
        if deq:
            print(deq[-1])
        else:
            print(-1)