[Python][프로그래머스][Level2] 큰 수 만들기

[Python][프로그래머스][Level2] 큰 수 만들기

코드

def solution(number, k):
    number=list(number)
    N=0
    answer=[]
    while k:
        for i in range(N,len(number)):
            N=i
            if answer and number[i]>answer[-1]:
                answer.pop()
                break
            else:
                answer.append(number[i])
        else:
            return ''.join(answer[:-k])
        k-=1
    return ''.join(answer+number[N:])

원리는 다음과 같다.

현재까지 숫자중 큰 값이 나오면 answer 안에 있는 값들 중 그 값보다 작은 것들을 모두 뺀다.

가장 큰 값이 앞으로 와야하기 때문이다.

맨 뒤에 있는 값이 가장 크면 어떡하냐?

안에 있는 값들이 없어질 때마다

지워야하는 수인 k가 줄어든다.

앞에서 k 개수 만큼 없앴다면 정답은 answer에 있는 수와 N부터 있는 값들을 일렬로 배치한 것이다.

Discussion and feedback