처음 나의 코드는 문자열을 줄이고,넣고 등을 조작하여서 테스트 10에서 시간초과가 발생하였다
function solution(number, k) {
let answer= '';
let check = Math.max(...number.slice(0,k+1).split(''));
let startIndex = number.indexOf(check);
answer = number.slice(startIndex, number.length);
for(let i = 0 ; i< k-startIndex ; i++){
for(let j = 0 ; j <answer.length-1 ; j++){
if(answer[j] < answer[j+1]){
answer = answer.slice(0, j) + answer.slice(j+1, answer.length)
break;
}
}
}
if(answer.length > number.length-k){
answer = answer.slice(0,number.length-k)
}
return answer;
}
그래서 스택을 사용하여 이를 해결해보도록 했다
12번 오류가 생긴다면
10000 , 2 , 100을 테스트로 넣어보길 바란다 ㅠㅠ
function solution(number, k) {
let answer= '';
let stack = [];
// 주어진 수의 길이만큼 반복
for(let i = 0 ; i < number.length ; i++){
// 스택의 마지막 수가 그 뒤에 넣을 수보다 작으면 스택에서 제거
while(k> 0 && stack[stack.length-1] < number[i]){
stack.pop();
k--;
}
// 일단 스택에 넣음
stack.push(number[i]);
}
// 12번 오류를 잡기위한 코드
stack =stack.slice(0, number.length-k);
return stack.join('');
}