티스토리 뷰

문제 링크

 

28279번: 덱 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

문제 풀이

import sys
from collections import deque

input = sys.stdin.readline

deque = deque([])

n = int(input())
for _ in range(n):
    order = input().split()
    match (order[0], len(deque) == 0):
        case ("1", _):
            deque.appendleft(int(order[1]))
        case ("2", _):
            deque.append(int(order[1]))
        case ("3", True):
            print(-1)
        case ("3", False):
            print(deque.popleft())
        case ("4", True):
            print(-1)
        case ("4", False):
            print(deque.pop())
        case ("5", _):
            print(len(deque))
        case ("6", True):
            print(1)
        case ("6", False):
            print(0)
        case ("7", True):
            print(-1)
        case ("7", False):
            print(deque[0])
        case ("8", True):
            print(-1)
        case ("8", False):
            print(deque[-1])

28279번 입출력 예시

*key point: 덱은 스택과 큐를 합친 것 같은 자료 구조로 양쪽 끝에서 자료를 넣고 뺄 수 있다. 각 기능의 구현은 collections 모듈의 deque 를 사용해서 쉽게 구현할 수 있다. 조건문을 쉽게 표현하기 위해 match-case문을 사용했다. 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함