1. 문제와 예제
2. 전체 코드
from collections import deque
import sys
input = sys.stdin.readline
N = int(input().rstrip()) # 명령의 수
deq = deque()
for _ in range(N):
com = input().rstrip() # 명령
l = len(deq) # 덱에 들어있는 정수의 개수
# push_front X
if com.split()[0] == 'push_front':
deq.append(0) # 덱 가장 뒤에 0을 임의로 추가
for i in range(l, 0, -1):
deq[i] = deq[i-1] # 덱의 정수들을 한 칸씩 뒤로 밀음
deq[0] = com.split()[1] # 그 후 덱 가장 앞의 숫자를 정수 X로 덮음
# push_back X
elif com.split()[0] == 'push_back':
deq.append(com.split()[1])
# pop_front
elif com == 'pop_front':
if l == 0:
print("-1")
else:
print(deq.popleft())
# pop_back
elif com == 'pop_back':
if l == 0:
print("-1")
else:
print(deq.pop())
# size
elif com == 'size':
print(l)
# empty
elif com == 'empty':
if l == 0:
print(1)
else:
print(0)
# front
elif com == 'front':
if l == 0:
print("-1")
else:
print(deq[0])
# back
elif com == 'back':
if l == 0:
print("-1")
else:
print(deq[-1])
3. 풀이
10828번(스택) 가장 기초적인 스택 문제, 10845번(큐) 가장 기초적인 큐 문제, 조금 더 발전한 게 이번 문제다. 10845번(큐) 때와 같이 deque를 활용한다. 다른 명령들은 모두 쉽게 생각이 가능한데 큐의 가장 앞에 숫자를 넣어야 하는 'push_front X'를 어떻게 처리해야 하는지가 고민해볼 만한 포인트다.
'백준' 카테고리의 다른 글
[백준] 1654번 파이썬 (랜선 자르기) (0) | 2024.03.21 |
---|---|
[백준] 2108번 파이썬 (통계학) (0) | 2024.03.21 |
[백준] 10845번 파이썬 (큐) (0) | 2024.03.21 |
[백준] 10828번 파이썬 (스택) (0) | 2024.03.21 |
[백준] 10816번 파이썬 (숫자 카드 2) (0) | 2024.03.21 |