[programmers/py] 큰 수 만들기

승민·2024년 2월 2일

알고리즘

목록 보기
49/171

큰 수 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/42883

문제 설명

  • 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
  • number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.

풀이

stack을 사용
1. 현재 stack의 마지막 값이 num보다 작고 k>0이면 작은 값들을 제거
2. 현재 num을 stack에 추가
3. 원본배열에서 다 스택으로 꺼냈는데 k가 남아있다면, 남은 k만큼 스택의 뒤에서부터 제거

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

0개의 댓글