프로그래머스 알고리즘: 큰 수 만들기 (lv2)

sen·2023년 1월 11일
0

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


# 다른 사람 코드 참고
def solution(number, k):
    stack = []
    for num in number:
        while stack and stack[-1] < num and k > 0:
            k -= 1
            stack.pop()
        stack.append(num)
        
    if k != 0:
        stack = stack[:-k]
        
    return ''.join(stack)

기본 아이디어는 생각했는데 이중 반복문 안에서 중간의 원소를 지우니 결국 O(n^3)이 되어 일부 테스트케이스에서 실패했다.

이를 해결하기 위해 자바의 Linkedlist, 스택 등을 생각했는데 인접한 두 원소를 비교하거나 순서를 보존해야 해서 결국 풀지 못하고 다른 정답 코드를 참고했다.

정답 코드에서도 스택을 사용하는데, 나는 기존 리스트를 그대로 스택으로 변환해서 원소를 제외할 방법을 생각했다면 여기선 빈 스택에 원소를 추가해갔기 때문에 중간 순서의 원소도 빠르게 제거 할 수 있었다.

profile
𝙝𝙞 𝙩𝙝𝙚𝙧𝙚 😎

0개의 댓글