본문 바로가기
algorithm

[프로그래머스/python] Lv.2 큰 수 만들기

by 개발자 쿠키 2024. 7. 2.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1차 풀이

combination을 활용해 전체-k에 해당하는 수만 join하여 가장 큰 수를 출력하는 방식으로 풀었지만, 시간초과가 발생했습니다.

2차 풀이

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

구글링 후, stack을 활용하여 풀어야 한다는 것을 얻고 문제를 다시 풀어 보았습니다.

스택의 마지막 값이 push할 값보다 작다면 크거나 같은 값이 나올때 까지 값을 pop 합니다.