문제
= * 큰 수가 앞 자리에, 작은 수가 뒷 자리에 놓이도록.
(제약조건: 뺄 수 있는 수가 k개로 제한되어 있음)
def solution(number, k):
collected = []
for i, num in enumerate(number):
# 쌓아둔 숫자들의 갯수가 1개 이상이고, 마지막 원소가 num(현재 꺼낸 요소)보다 작으며, K가 0보다 큰 경우.
# 다음의 3개의 조건은 탐욕법에 기반하여 두 수를 비교하기 위한 전제조건임.
while len(collected) > 0 and collected[-1] < num and k> 0:
# 조건을 부합하지 않은 숫자들을 제거한다.
collected.pop()
# 숫자를 제거하였으므로, k의 횟수를 차감한다.
k -= 1
# k가 모두 제거되었을 경우, collected 변수에 남은 수를 인자삼아 리스트화 한다.
if k == 0:
collected += list(number[i:])
break
# 조건 만족 후, 리스트의 인자들을 이어붙인다.
collected.append(num)
# k가 아직 0 이상의 수인 경우, 뒤에서 k개의 수 만큼의 인덱스 기준으로 끊어서 버린다.
collected = collected[:-k] if k > 0 else collected
answer = ''.join(collected)
return answer