백준 28279번: 덱 2 - python

tomkitcount·2025년 4월 8일

매일 알고리즘

목록 보기
20/298

https://www.acmicpc.net/problem/28279

문제

각 명령에 맞게 조건문으로 코드를 작성하면 된다.

import sys
from collections import deque

# 명령어의 개수 N을 입력받습니다.
N = int(sys.stdin.readline())

# deque (더블 엔디드 큐)를 초기화합니다.
myDeque = deque()

# N번의 명령을 받아 해당 연산을 수행합니다.
for _ in range(N):
    # 각 명령어를 입력받아 정수 리스트로 변환합니다.
    command = list(map(int, sys.stdin.readline().split()))
    
    # command[0]는 명령의 종류를 나타내며, 그에 따라 다른 연산을 수행합니다.
    if (command[0] == 1):
        # 명령 1: 입력받은 command[1] 값을 덱의 왼쪽에 추가합니다.
        myDeque.appendleft(command[1])
    elif (command[0] == 2):
        # 명령 2: 입력받은 command[1] 값을 덱의 오른쪽에 추가합니다.
        myDeque.append(command[1])
    elif (command[0] == 3):
        # 명령 3: 덱의 왼쪽에서 하나의 원소를 제거하고 그 값을 출력합니다. 덱이 비어있다면 -1을 출력합니다.
        if (myDeque):
            print(myDeque.popleft())
        else:
            print(-1)
    elif (command[0] == 4):
        # 명령 4: 덱의 오른쪽에서 하나의 원소를 제거하고 그 값을 출력합니다. 덱이 비어있다면 -1을 출력합니다.
        if (myDeque):
            print(myDeque.pop())
        else:
            print(-1)
    elif (command[0] == 5):
        # 명령 5: 덱의 크기를 출력합니다.
        print(len(myDeque))
    elif (command[0] == 6):
        # 명령 6: 덱이 비어있는지 확인합니다. 비어있다면 1, 아니면 0을 출력합니다.
        print(0 if myDeque else 1)
    elif (command[0] == 7):
        # 명령 7: 덱의 가장 왼쪽 원소를 출력합니다. 덱이 비어있다면 -1을 출력합니다.
        if (myDeque):
            print(myDeque[0])
        else:
            print(-1)
    elif (command[0] == 8):
        # 명령 8: 덱의 가장 오른쪽 원소를 출력합니다. 덱이 비어있다면 -1을 출력합니다.
        if (myDeque):
            print(myDeque[-1])
        else:
            print(-1)

deque와 append, appendleft, pop ,popleft 를 사용하여 풀 수 있었다.

profile
To make it count

0개의 댓글