https://programmers.co.kr/learn/courses/30/lessons/42883
레벨 2 문제임에도 불구하고 처음부터 아이디어가 전혀 안 떠올랐다. 분명히 큰 자릿수의 작운 숫자를 최 우선으로 삭제하는 것이 방법이긴 했는데, 이걸 어떻게 표현해낼 방법이 없었다.
"그리디"라는 단어에 너무 매몰되다 보니까, 항상 그때의 최선의 선택을 한다 는게 말로는 알겠지만 어떻게 해결해야 할지 전혀 몰랐다. 아직 그리디에 대해서 공부가 부족한건 아닌가 싶다.
현재 자리의 숫자 > 스택 top에 담긴 숫자
라면 현재 자리의 숫자 <= 스택 top
이 될 때 까지 스택을 pop한다.def solution(number, k):
answer = []
idx = 0
num = k
for index, digit in enumerate(number):
while answer != [] and answer[-1] < digit and num > 0:
answer.pop()
num -= 1
answer.append(digit)
if num <= 0:
idx = index
break
if num > 0:
while num > 0:
answer.pop()
num -= 1
if idx != 0:
answer.append(number[idx+1:])
return ''.join(answer)