프로그래머스 - 탐욕법(Greedy)

# 큰 수 만들기 (Level 2)

  • Point. 앞자리가 높은 수가 되게 뽑으면, 무조건 높은 숫자가 된다 (참고)
  1. 스택을 생성한다
  2. number을 순회한다
    • 스택에 원소가 존재하고 마지막 원소가 순회 수보다 작고 k가 0보다 크다면
      • 마지막 원소를 빼고 k를 1줄인다
    • 스택에 순회 수를 추가한다
  3. k가 0보다 크면 (ex) 앞 원소가 추가할 원소보다 커서 k 숫자가 안작아질 때)
    • k개수를 뺀 나머지를 스택에 저장한다
  4. 스택을 이어붙여 하나의 문자열로 만든다
def solution(number, k):
    stack = []

    for num in number:
        while len(stack)>0 and stack[-1] < num and k > 0:
            stack.pop()
            k -= 1
        stack.append(num)
    
    if k>0:
        stack = stack[:-k]

    return ''.join(stack)

 

반응형

+ Recent posts