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, 스택 등을 생각했는데 인접한 두 원소를 비교하거나 순서를 보존해야 해서 결국 풀지 못하고 다른 정답 코드를 참고했다.
정답 코드에서도 스택을 사용하는데, 나는 기존 리스트를 그대로 스택으로 변환해서 원소를 제외할 방법을 생각했다면 여기선 빈 스택에 원소를 추가해갔기 때문에 중간 순서의 원소도 빠르게 제거 할 수 있었다.