알고리즘 스터디
[프로그래머스] 탐욕법 3. 큰 수 만들기
cme10575
2021. 2. 24. 18:27
문제
풀이
def solution(number, k):
answer = ''
result = [number[0]]
idx = 1
while k > 0:
if idx == (len(number)):
result = result[:-k]
break
while result and number[idx] > result[-1] and k > 0:
k -= 1
result.pop()
result.append(number[idx])
idx += 1
if k == 0:
for i in range(idx, len(number)):
result.append(number[i])
return "".join(result)
앞자리 수가 커야 가장 큰 수가 만들어지기 때문에 수를 하나씩 추가하며 이전 수보다 큰 수가 들어오면 이전 수를 제거하는 로직이다.
idx가 len(number)와 같아졌을 때 즉, 76543.. 같이 작아지는 형태인데 k개만큼 빼지 않았을 때 마지막 수를 잘라주는 과정을 빼먹어 12번 케이스에서 실패했어서 수정했다.