https://www.acmicpc.net/problem/2812
이 문제는 단순해 보이는데, 생각할수록 뭔가 복잡해보였다. 역시 예시를 따라가며 구조를 파악하는 건 중요한듯 싶다.
# PYTHON CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import sys
n, k = map(int, sys.stdin.readline().split())
s1 = list(sys.stdin.readline().rstrip())
stk1 = []
cnt = 0
for i in range(n):
while cnt < k and stk1 and stk1[-1] < s1[i]:
stk1.pop()
cnt += 1
stk1.append(s1[i])
print(''.join(stk1[:n - k]))
|
cs |
한가지 놓쳐서 오답을 받은 부분은 마지막 줄에 결론을 낼 때 전부 같은 값으로 입력된 예시는 stk1에서 pop될 기회가 없으므로 마지막 줄에서 범위를 지정해야하더라.
'백준 > 스택' 카테고리의 다른 글
[Python] 백준, 1725(스택) (0) | 2021.08.06 |
---|---|
[Python] 백준, 3986(스택) (0) | 2021.08.06 |
[Python] 백준, 1935(스택) (0) | 2021.08.02 |
[Python] 백준, 9935(스택) (0) | 2021.08.02 |
[Python] 백준, 6549(스택) (0) | 2021.08.01 |