1. 문제
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
2. 풀이
from collections import deque
import sys
input = sys.stdin.readline
# n : 입력받는 명령 수
n = int(input())
# int_deq : 정수를 입력받을 deque
int_deq = deque()
for i in range(n):
order = input().strip()
if 'push_front' in order:
order_int = int(order.split()[1])
int_deq.appendleft(order_int)
elif 'push_back' in order:
order_int = int(order.split()[-1])
int_deq.append(order_int)
elif 'pop' in order:
if len(int_deq) == 0:
print(-1)
elif 'front' in order:
print(int_deq.popleft())
elif 'back' in order:
print(int_deq.pop())
elif 'size' == order:
print(len(int_deq))
elif 'empty' == order:
if len(int_deq) == 0:
print(1)
else:
print(0)
elif 'front' == order:
if len(int_deq) == 0:
print(-1)
else:
print(int_deq[0])
elif 'back' == order:
if len(int_deq) == 0:
print(-1)
else:
print(int_deq[-1])
3. 후기
- 문제의 설명에 해당 문제는 deque를 만들어 사용하라고 한다. 때문에 이전 문제를 해결할 때 사용했던 collections 라이브러리의 deque를 사용하여 해결했다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 큐 2(15258) (0) | 2023.01.13 |
---|---|
(Python)백준 코딩테스트 연습 - 요세푸스 문제(1158) (0) | 2023.01.12 |
(Python)백준 코딩테스트 연습 - 듣보잡(1764) (0) | 2023.01.12 |
(Python)백준 코딩테스트 연습 - 체스판 다시 칠하기(1018) (0) | 2023.01.10 |
(Python)백준 코딩테스트 연습 - ATM(11399) (0) | 2023.01.10 |