[Python]백준 BaekJoon.AC 10845 : 큐(deque, try-except)
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)