Algorithm/Programmers

[Python] 큰 수 만들기

느낌표 공장장 2021. 6. 6. 23:59
def solution(number, k):
    
    answer = [number[0]]
    
    for num in number[1:] :
        while len(answer)>0 and answer[-1] < num and k > 0 :
            answer.pop()
            k -= 1
        answer.append(num)
        
    if k != 0 :
        answer = answer[:-k]
        
    return ''.join(answer)

풀이

1. answer에 값을 순서대로 삽입한다.

2. 들어오는 값이 answer에 있는 값보다 크다면 answer의 값을 빼주고 k에서 1을 빼준다. (반복)

 

3.  k만큼 숫자를 빼주지 못했다면, 뒤에서부터 k만큼(남은 부분) 삭제해준다.

 

* 처음에 while 대신 if를 썼었는데 그렇게 되면, test 3번 "4177252841" 에서 7이 들어올때 1은 삭제가 되는데 4가 삭제가 안되는 경우가 발생했다. 그래서 반복문으로 바꿔주게 되었다.

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 구명보트  (0) 2021.06.10
[Python] 카펫  (0) 2021.06.07
[Python] 다리를 지나는 트럭  (0) 2021.06.04
[Python] 위장  (0) 2021.06.02
[Python] 메뉴 리뉴얼  (0) 2021.06.02