파이썬 알고리즘 : 큰 수 만들기

greedy

2024년 4월 16일 알고리즘 문제풀이

문제

난이도

Lv. 2

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def solution(number, k):
    stk = []
    
    for num in number:
        # stk가 비었으면 넣음
        if not stk:
            stk.append(num)
            continue
        if k > 0:
            # 지금 주목하는 수가 방금 넣은 수보다 크다면 뺸다.
            while stk[-1] < num:
                stk.pop()
                k -= 1
                # 더이상 뺄 것이 없거나 더이상 빼면 안되면 반복문 종료
                if not stk or k <= 0:
                    break
        stk.append(num)
        
    # 모두 순회했는데 아직 뺄것이 남았다면 가장 뒤에것만뺀다.
    if k:
        stk = stk[:-k]
        answer = ''.join(stk)
    else:
        answer = ''.join(stk)

    return answer