function solution(number, k) {
let newNumber = number.split('').map((item) => Number(item));
let counter = 0;
let index = 0;
while (counter < k) {
if (newNumber[index] < newNumber[index + 1]) {
newNumber.splice(index, 1, null);
newNumber = newNumber.filter((item) => item !== null);
index = 0;
counter += 1;
} else {
index += 1;
}
}
return newNumber.join('');
}
=> 1차시도 배열에 삭제 및 초기화 작업을 계속해서 시간 초과 발생
function solution(number, k) {
let counter = 0;
let index = 0;
while (counter < k) {
if (number[index] < number[index + 1]) {
number = number.slice(0, index) + number.slice(index + 1);
index = 0;
counter += 1;
} else {
index += 1;
}
}
return number;
}
=> 2차시도 문자열로 자료형 변경 후 수행해도 여전히 시간 초과 발생
function solution(number, k) {
const stack = []
let counter = 0
for (let num of number) {
while (counter < k && stack[stack.length - 1] < num) {
stack.pop()
counter += 1
}
stack.push(num)
}
while (counter < k) {
stack.pop()
counter += 1
}
return stack.join('')
}
=> 3차시도 주어진 문자열을 계속 변경하는 것 보다, 배열을 하나 선언해놓고 더하는 방식이 더 효율적이기에 통과