# 크게 만들기
N, K = map(int, input().split())
arr = list(map(int, input().strip()))
result = []
for x in arr:
if not result:
result.append(x)
continue
while result and result[-1] < x and K != 0:
K -= 1
result.pop()
result.append(x)
while K != 0:
K -= 1
result.pop()
print(*result, sep='')
자료구조(스택), 그리디
1. result 리스트를 정의하고 입력받은 값들을 하나씩 순회
- result 리스트가 비어 있다면 append하고 continue
- result[-1]보다 현재 값이 더 크다면 pop하고 K-- (pop할 수 있는 횟수) 반복
- 이후, append
2. K가 0이 될 때까지 나머지 pop
3. result 출력
전에 프로그래머스에서 풀었던 문제이다. 그래서 쉽게 풀 수 있었다.
[프로그래머스] 고득점Kit - 그리디
3. 큰 수 만들기(Lv. 2)
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 2473번 - 세 용액 (파이썬) (0) | 2022.03.10 |
---|---|
[백준] 2470번 - 두 용액 (파이썬) (0) | 2022.03.10 |
[백준] 17822번 - 원판 돌리기 (파이썬) (0) | 2022.03.08 |
[백준] 2239번 - 스도쿠 (파이썬) (0) | 2022.03.05 |
[백준] 2665번 - 미로만들기 (파이썬) (0) | 2022.03.04 |