DFS를 통해서 모든 배열을 나열해 보려고 하였다.
하지만 생각대로 되지 않아서 결국 풀지 못하고 다른분의 코드를 참고 하였다.
이 문제는 stack으로 해결 해야 한다고 한다.
function solution(number, k) {
const stack = [];
let answer = "";
for (let i = 0; i < number.length; i++) {
let x = number[i];
while (k > 0 && stack[stack.length - 1] < x) {
stack.pop();
k--;
}
stack.push(x);
}
stack.splice(stack.length - k, k);
answer = stack.join("");
return answer;
}
일단 stack에 담기전에 검사 부터 해야 한다.
그러면 그 다음값이 기존의 값보다 큰지를 확인한다.
크면 stack를 갱신하는 것이다.
이 과정은 k번 유지를 한다.
왜냐하면 가장 전체 배열에서 k번쨰를 제외한 값만 뺴내와야 하기 떄문이다.
이후 splice
를 통해서 배열을 나누고 join
을 통해서 합쳐준다.
k번 이 끝나면 나머지 값을 단순히 붙여주기만 하면 된다.
뭔가 풀수 있을듯 하면서 못풀었다... 너무 아쉽다