[Python]BaekJoon.AC

[Python]백준 BaekJoon.AC 10845 : 큐(deque, try-except)

스뇨잉 2022. 1. 24. 15:14
728x90
728x90

 

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

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

 

 

이전에 했던 10828-스택  변형문제다. 까다롭게 변형된 것도 아니라 기존 틀에 몇 가지만 더해주면 된다.

문제 이름은 '큐'지만... 덱을 이용했다.

파이썬에선 queue와 deque이 뚜렷하게 차별화된 기본 사용법을 가지진 않는 것 같다.

큐보다 덱이 더 기능이 많은 것 같기도 하고...

양방향 추가·추출이 가능한 deque과 그렇지 않은 queue 중 굳이 queue를 사용할 이유는 아직까지 없었다.

우선순위 큐를 사용하지 않는 한 그냥 deque을 사용하고 있다.

 

 

 

기본적으로 append()와 pop() 함수는 가장 최근 저장한 요소쪽(오른쪽)에서 기능을 처리한다.

 

그러나 조건에선 제일 먼저 저장한 요소(왼쪽)를 꺼내고 출력하라고 나와있다.

 

이럴 땐 appendleft()와 popleft()를 이용하면 된다.

 

더 이렇다 할 특징은 없는 듯 하고, 무난하게 통과할 수 있었다.

 

 

 

기존 틀 작성 방법은 아래 올려둔 글을 참고하면 된다.

 

 

 

2022.01.24 - [[Python]BaekJoon.AC] - [Python]백준 BaekJoon.AC 10828 : 스택(deque, try-except)

 

[Python]백준 BaekJoon.AC 10828 : 스택(deque, try-except)

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고..

stepping-coding.tistory.com

 

 

 

import sys
from collections import deque

N = int(input())
deq = deque()

for i in range(N):
    string = sys.stdin.readline().split()

    if string[0] == "push":
        deq.append(int(string[1]))
    elif string[0] == "pop":
        try:
            print(deq.popleft())
        except:
            print(-1)
    elif string[0] == "size":
        print(len(deq))
    elif string[0] == "empty":
        if deq:
            print(0)
        else:
            print(1)
    elif string[0] == "front":
        try:
            p = deq.popleft()
            print(p)
            deq.appendleft(p)
        except:
            print(-1)
    elif string[0] == "back":
        try:
            p = deq.pop()
            print(p)
            deq.append(p)
        except:
            print(-1)

 

 

 

728x90
728x90