문제 링크 : https://www.acmicpc.net/problem/2812
그리디 알고리즘 문제이다.
스택 자료구조에 수 들을 하나씩 담아나간다. 그러다 큰 수를 만나면, 스택에 이미 담겨있던 작은 수들을 pop해나간다. K를 다 사용하지 않았을 시 마지막 숫자에서 빼주면 된다.
while문을 이용해 작은 수들을 pop한다.
import sys
N, K = map(int, sys.stdin.readline().split())
number = sys.stdin.readline().strip()
stack = [number[0]]
for i in range(1,len(number)):
if K == 0:
stack.append(number[i:])
break
if stack[-1] >= number[i]:
stack.append(number[i])
else:
while stack and K > 0 and stack[-1] < number[i]:
stack.pop()
K -= 1
stack.append(number[i])
if K > 0:
while K > 0:
stack.pop()
K -= 1
print(''.join(stack))