title: "[프로그래머스] 큰 수 만들기 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/42883"
description: "프로그래머스 Level 2 문제 [큰 수 만들기]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(number, k):
    # 맨 앞의 k+1개 숫자를 보고, 그 중 가장 큰 숫자를 취합니다.
    # 이를 위해 숫자를 몇 개 버려야 하는지를 계산합니다.
    # 그 뒤의 수부터 동일하게, 버릴 수 있는 숫자가 없어질 때까지 반복합니다.
    n2idx = {n:i for i, n in enumerate(number)}
    
    answer = []
    while k > 0:
        found9 = False
        # 9를 만나면 바로 처리합니다.
        for i in range(k+1):
            if number[i] == '9':
                answer.append('9')
                k = k - i
                number = number[i+1:]
                found9 = True
                break
        
        if found9:
            continue
            
        s = number[:k+1]
        mx = max(s)
        answer.append(mx)
        
        idx = s.index(mx) 
        k = k - idx
        number = number[idx + 1:]
        
        if len(number) == k:
            return ''.join(answer)
        
    if number:
        answer.append(number)
    
    return ''.join(answer)

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges