정글 내에서 알고리즘 스터디를 할 때 풀었던 문제인것같은데
아예 기억이 잊힌건지..ㅎ
기억이 안나서 또 골머리싸매다 결국 이전 문제풀이를 보고 이해했다 ㅠㅠ..
import sys
N,K=map(int,input().split())
num_str=input()
stack=[]
to_remove=K
for num in num_str:
while to_remove>0 and stack and stack[-1]<num:
stack.pop()
to_remove-=1
stack.append(num)
# 모든 숫자가 내림차순일 때 to_remove가 전혀 깎이지 않은 경우도 있으므로
stack=stack[:N-K]
print(*stack,sep="")
stack=stack[:N-K]
요부분이 왜 있어야 하나 의문이였는데
만약 주어지는 숫자가 987654321 이런식이면
끝쪽 숫자들을 제거하는게 제일 큰 숫자가 되는것이기에
for 문 안의 로직으로는 제거가 안된다.
그래서 이 경우가 나올경우도 생각하여 로직을 추가해줘야한다.