Written by
최태열
on
on
[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