|
" 문제 "
" 아이디어 "
기본적인 아이디어는 10828 스택 문제와 비슷하다.
2021/01/03 - [알고리즘/Beakjoon] - [ Baekjoon : python ] 백준 10828번 스택 - 파이썬으로 스택 구현하기
스택 (Stack) 과 유사하게 덱 (Deck) 도 list로 구현했다.
다만 스택과는 달리 데이터 삽입과 삭제가 양쪽에서 일어난다는 차이가 있다.
push 와 pop 명령이 모두 front 와 back으로 나뉘는 것을 알 수 있다.
list의 어느쪽을 front로 할 지는 관계없으나 이 코드에서는 deck[0] 을 front 로 간주하고 작성하였다.
한 가지 주의할 점은 pop() 의 경우 list의 마지막 인덱스의 데이터를 꺼내오기 때문에
pop_front 명령에서는 다음과 같이 pop 함수의 인자로 0을 넣어서 front 데이터를 꺼내도록 한다.
deck.pop(0)
나머지 명령은 스택 문제와 유사하다.
" 코드 "
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
|
import sys
input = sys.stdin.readline
n = int(input())
deck = []
for _ in range(n):
command = input().split()
if command[0] == "push_front":
deck.insert(0, command[1])
elif command[0] == "push_back":
deck.append(command[1])
elif command[0] == "pop_front":
if not deck:
print(-1)
else:
print(deck.pop(0))
elif command[0] == "pop_back":
if not deck:
print(-1)
else:
print(deck.pop())
elif command[0] == "size":
print(len(deck))
elif command[0] == "front":
if not deck:
print(-1)
else:
print(deck[0])
elif command[0] == "back":
if not deck:
print(-1)
else:
print(deck[-1])
elif command[0] == "empty":
if not deck:
print(1)
else:
print(0)
|
cs |
" 참고자료 "
반응형
'알고리즘 > Baekjoon' 카테고리의 다른 글
[ Baekjoon : python ] 백준 11726 2xn 타일링 - 다이나믹프로그래밍 (0) | 2021.02.20 |
---|---|
[ Baekjoon : python ] 백준 2021 1로 만들기 - 다이나믹 프로그래밍 (재귀호출) (0) | 2021.02.20 |
[ Baekjoon : python ] 백준 3085 사탕게임 - 브루트포스 (0) | 2021.02.20 |
[ Baekjoon : python ] 백준 10828번 스택 - 파이썬으로 스택 구현하기 (0) | 2021.01.03 |
[ Baekjoon : python ] 백준 15552번 빠른 A+B ( input() vs sys.stdin.readline()) (0) | 2021.01.03 |