백준(BOJ) 큐, 덱: 큐 2(실버 4)
문제 출처: https://www.acmicpc.net/problem/18258
1. 알고리즘
- 정수 저장을 위한 큐를 deque 자료형으로 선언, 명령의 수 만큼 반복
- 명령어를 받아 list 형식으로 받음
- push 명령어의 경우 'push X'의 형태이기 때문에 X를 분리해 주기 위해서 list.
- list의 0번 인덱스가 항상 명령어. 1번 인덱스는 push일 경우에만 존재.
- push X: deque.append(X) 큐의 가장 뒤에 X 삽입
- pop: try~except 구문으로 큐의 가장 앞에 있는 수를 빼고 그 수를 출력. 큐가 비어있을 경우 -1 출력
- size: 큐의 길이를 출력
- empty: 큐의 길이가 0이면 1, 0이 아니면 0을 출력
- front: try~except 구문으로 큐의 가장 앞에 있는 정수를 출력. 큐가 비어있을 경우 -1 출력
- back: try~except 구문으로 큐의 가장 뒤에 있는 정수를 출력. 큐가 비어있을 경우 -1 출력
2. 유의사항
3. 어려웠던 점, 해결방법
4. 소스 코드
상세 코드 설명은 주석
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import sys
from collections import deque
input = sys.stdin.readline
if __name__ == '__main__':
N = int(*map(int, input().split()))
queue = deque()
for _ in range(N):
cmd = list(map(str, input().split()))
#cmd 값에 따른 동작
if cmd[0] == 'push':
queue.append(cmd[1])
elif cmd[0] == 'pop':
try:
pop_data = queue.popleft()
print(pop_data)
except:
print(-1)
elif cmd[0] == 'size':
print(len(queue))
elif cmd[0] == 'empty':
print(1 if len(queue) == 0 else 0)
elif cmd[0] == 'front':
try:
print(queue[0])
except:
print(-1)
elif cmd[0] == 'back':
try:
print(queue[-1])
except:
print(-1)
|
cs |
5. 고민
'Algorithms > 백준' 카테고리의 다른 글
[백준_2636] 치즈 with Python (0) | 2021.05.20 |
---|---|
[백준_5430] AC with Python (0) | 2021.05.18 |
[백준_17837]새로운 게임2 with Python (0) | 2021.04.23 |
[백준_13460]구슬 탈출 2 with Python, Java (0) | 2021.04.18 |
[백준_17822]원판 돌리기 with Python (0) | 2021.04.13 |
댓글