728x90

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

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

출처 : 프로그래머스


def solution(number, k):
    stack = []
    for num in number:
        # 다음 넣을 num이 스택에 마지막 수보다 크면 스택에 있는걸 뺀다.
        while stack and stack[-1] < num and k>0: 
            k-=1
            stack.pop()
        stack.append(num) # num 넣는다.
    if k>0:
        stack = stack[:-k]
    return ''.join(stack)

풀이

stack을 사용했다.

number의 수를 차례대로 stack에 넣는다.

이때, stack에 꼭대기에 있는 값과 다음에 넣을 num 값을 비교한다.

스택에 넣을 num 값이 더 크다면 stack에 있는 값을 빼고 k를 하나 줄인다. 

 

이때, 12번 테스트 케이스가 오류 난다.

생각해봤는데 while 문을 다 돌았을 때도 k가 양수인 경우가 있다.

"7654321"처럼 내림차순으로 정렬되어 있는 경우 다 돌아도 k가 양수이다.

이 때는 끝에 있는 k개 문자만 제거하면 된다.

+ Recent posts