이진 탐색 알고리즘 문항들이 뒤로 갈수록 문제에 포함된 알고리즘으 종류가 많아지고 복잡해지기에 다른 알고리즘에 대한 숙련도가 부족하다면 결국 제자리걸음일 것 같아 스택으로 넘어왔다.
단순히 리스트 메서드를 이용한 스택 문항들은 쉽게 풀리지만 이중 연결 리스트를 이용한 스택은 기억이 잘 나질 않아 연결 리스트에 대한 복습도 할 겸 책을 들춰가며 클래스로도 구현을 해봤다.
이 포스팅은 두 문항 풀이를 올리고 다음 포스팅에 연결리스트 +a 해서 올려야겠다.
# PYTHON CODE - 10773
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import sys
k = int(sys.stdin.readline())
stk1 = []
for _ in range(k):
n = int(sys.stdin.readline())
if n == 0:
stk1.pop()
else:
stk1.append(n)
print(sum(stk1))
|
cs |
가장 기본 구조의 스택.
# PYTHON CODE - 10799
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
list1 = list(input())
stk1 = []
answer = 0
for i in range(len(list1)):
if list1[i] == '(':
stk1.append('(')
else:
if list1[i - 1] == '(':
stk1.pop()
answer += len(stk1)
else:
stk1.pop()
answer += 1
print(answer)
|
cs |
이 문제는 조금 까다로웠는데 생각보다 정답률이 높아서 당황했다.
포인트는 두개다.
1) input 된 값들을 리스트로 만들어서 스택과 리스트 두 개를 따로 생각
2) 막대의 관점보다 레이저 입장에서 자르는 경우를 생각하는 게 더 용이
'백준 > 스택' 카테고리의 다른 글
[Python] 백준, 17298(스택) (0) | 2021.07.28 |
---|---|
[Python] 백준, 5397(스택) (0) | 2021.07.27 |
[Python] 백준, 2493(스택) (0) | 2021.07.27 |
[Python] 백준, 2504(스택) (0) | 2021.07.26 |
[Python] 백준, 1406(스택) (0) | 2021.07.23 |