[프로그래머스/Python] - Lv2 / 큰 수 만들기

Chooooo·2023년 3월 3일
0
post-thumbnail

큰 수 만들기

level2-그리디-큰 수 만들기

def solution(number, k):
    n = len(number)
    res = []
    
    data = number
    for idx, x in enumerate(data):
        if len(res) == 0: #비어있다면
            res.append(x)
            continue
        if k>0: #아직 제거 가능
            while res[-1] < x: #스택 마지막 수가 현재 수보다 작으면. 꺼내야지
                res.pop() #제거했으니
                k -= 1 #제거 가능 횟수 줄여야함.
                if len(res) == 0 or k == 0: #비었거나 다 지웠으면 탈출
                    break
        res.append(x)
        #즉 현재 숫자 x에 대해서 스택 안에 저장한 값과 계속 비교를 하는 것이다.ㅔ갸
        
    while k > 0: #아직 남았을 수도 있어서
        res.pop()
        k -= 1 
    temp = ""
    for x in res:
        temp += x
    return temp
        

코멘트

핵심은 스택을 활용하는 것이었다. data를 순회하면서 res가 비었다면 data를 넣어주고, 만약 존재한다면 이제 현재 숫자와 res에 저장된 숫자 사이에서 마지막 값과 비교를 진행한다.
k>0, 스택이 비어있지 않아야 하고, 마지막 값이 더 작아야하고.. 등등 직관적으로 해결하면 된다.
하지만 다 끝나고도 k가 0보다 큰 경우가 있을 수도 있다.

  • 그렇기에 해당 경우를 생각해서 마지막 조건을 처리해준다면 끝난다!
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글