https://school.programmers.co.kr/learn/courses/30/lessons/42883
[프로그래머스] 42883번 : 큰 수 만들기🥈(LEVEL2)
⏰ 걸린 시간 : 40분 🔥 오답필요
시간복잡도 : O(N)
- 알고리즘 유형 : [스택]
✔️ [문제 접근 방법]
- 수를 돌면서 stack의 값이 있고 마지막 값이 현재 for문의 값보다 작고 k가 0보다 크면
- 값을 뺀다. k도 -1 씩해준다.
- 모든값은 stack에 넣어주고
- 예외로 k가 0이 아닐 경우 k 만큼 뒤에서 빼면된다.
✔️ [주의 사항]
0. combolations로 접근하면 시간초과가 발생한다. O(N^2)
def solution(number, k): answer = '' 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] answer = "".join(stack) return answer
stack으로 접근하면서 풀면 쉽다.
- [해당 코드]