접근법
이 문제는 탐욕법(Greedy)입니다! 먼저 바꿔야할 개수 k번 만큼 반복문을 돌고, number의 문자 하나하나에 접근하며, 현재 문자와 다음 문자를 비교하고, 다음 문자가 더 클경우 현재 문자를 지워버립니다. 만약 현재 문자보다 큰 문자가 없을 경우 문자열의 가장 뒷부분을 지워버립니다! 여기서 else문이 for문과 함께 쓰였는데, 파이썬에서 for문이 break에서 끊기지 않고 끝까지 돌았다면, else문을 수행합니다.
start 와 len_number를 계속 갱신해주는 이유는, 문자열에서 하나의 문자가 지워지면, 문자열의 길이가 짧아지기 때문이죠! 그래서 인덱스, 길이 모두 바뀝니다!
나의 코드
def solution(number, k):
len_number = len(number)
start = 0
for count in range(k):
for index in range(start, len_number-1):
if number[index] < number[index+1]:
number = number[:index] + number[index+1:]
len_number -= 1
if index > 0: start = index-1
break
else:
number = number[:len_number-k+count]
break
return "".join(list(map(str,number)))