N,K = map(int,input().split())
number =list(input())
result = [number[0]]
idx = 1
while K and idx <N:
while result and K and number[idx] > result[-1]:
result.pop()
K -= 1
result.append(number[idx])
idx += 1
for _ in range(K):
result.pop()
result = result + number[idx:]
print(''.join(result))
기본적인 원리는 다음과 같다.
반복문을 돌리면서 result에 마지막수보다 새로들어온 값이 클시에는 그 값들을 하나씩 빼준다. 그리고 난뒤 append를 해준다.
이렇게 끝까지 갔는데도, K가 남아있을시에는 남은 K만큼 pop을 해준다.
그리고, 만약 끝까지 가지 않았는데도, K만큼의 수를 이미 뺐다하면, 나머지 값들을 뒤에 붙여주면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 1976 여행 가자 (0) | 2021.04.08 |
---|---|
[BOJ/백준] 7576 토마토 (0) | 2021.04.08 |
[BOJ/백준] 14002 가장 긴 증가하는 부분 수열 4 (0) | 2021.04.08 |
[BOJ/백준] 16235 나무 재테크 (0) | 2021.04.08 |
[BOJ/백준] 2075 N번째 큰 수 (0) | 2021.04.08 |