알고리즘 스터디

[프로그래머스] 탐욕법 3. 큰 수 만들기

문제


풀이

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번 케이스에서 실패했어서 수정했다.