본문 바로가기

PS/프로그래머스

[프로그래머스-탐욕법] 큰 수 만들기_파이썬 ❌❌

programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr


def solution(number, k):
    stack = [number[0]]
    for n in number[1:]:
        while stack and stack[-1] < n and k > 0:
            stack.pop()
            k -= 1
        stack.append(n)
    
    if k != 0:
        stack = stack[:-k]
    
    return ''.join(stack)

 

스택에 number 0번째 수 삽입.

1번째 수 부터  for문을 돈다. k(제거 횟수)가 남아있는 한, stack에 n(현재 요소)보다 큰 요소가 있어선 안된다.

따라서 n이 stack[-1] 보다 크고 k가 남아있으면, stack.pop(), k -= 1. 그리고 while문을 나올 때 까지 반복.

while문을 나오면 stack에 n 삽입. for 문이 끝난 후에도 k가 남아있으면 남아있는 k만큼 뒤에서 삭제.

마지막으로 문자열 리스트를 문자열로 만들기 위해 ''.join(stack)