백준 덱2 28279번

초코소금빵·2025년 1월 22일

백준 코딩

목록 보기
2/7

문제

백준 28279번
https://www.acmicpc.net/problem/28279

문제 이해

이 무엇인가?

  • deque
  • 양쪽 끝에서 삽입과 삭제가 가능한 자료구조
  • 스택 + 큐
*사진 출처: https://dev-mandos.tistory.com/195

문제 풀이

  • 이번에는 문제를 이해해야하는 문제보다는 주어진 문제의 설명(해설)대로 코드를 작성하면 된다.

deque = [1,2,3,4] 가 있다고 가정해보자.

  • 왼쪽 추가: appendleft()
    - deque.appendleft(0)

    • 출력 값: [0, 1, 2, 3, 4 ]
  • 왼쪽 삭제: popleft()
    - print(deque.popleft())

    • 출력 값: 0
  • 오른쪽 추가: append()
    - deque.append(5)

    • 출력 값: [1, 2, 3, 4, 5]
  • 오른쪽 삭제: pop()
    - print(deque.pop())

    • 출력 값: 5

이용 모듈(방법)

1 X : appendleft(X)
2 X : append(X)
3 : popleft()
4 : pop()
5 : len()
6 : empty() 또는 len()
7 : [0] 리스트 idx 이용
8 : [-1] 리스트 idx 이용

파이썬 코드

import sys
store = deque()
N = int(input())
for _ in range(N):
    orders = list(map(int, sys.stdin.readline().split()))    
    if orders[0] ==1:
        store.appendleft(orders[1])
    elif orders[0] ==2:
        store.append(orders[1])
    elif orders[0] == 3:
        if store:
            print(store.popleft())
        else:
            print(-1)
    elif orders[0] == 4:
        if store:
            print(store.pop())
        else:
            print(-1)
    elif orders[0] ==5:
        print(len(store))
    elif orders[0] ==6:
        if store:
            print(0)
        else:
            print(1)
    elif orders[0] ==7:
        if store:
            print(store[0])
        else:
            print(-1)
    else:
        if store:
            print(store[-1])
        else:
            print(-1)

코드 시도

  • 1차) 시간초과
    문제) 입력 받을 때, list(map(int,input().split()))으로 했음.
    해결) list(map(int,sys.stdin.readline().split()))으로 변경.

profile
피할 수 없으면 즐기자

0개의 댓글