https://programmers.co.kr/learn/courses/30/lessons/42883
그리디 알고리즘은 현재에 충실한 알고리즘이다. 미래를 생각하지 않기때문에, 판단하는 순간을 고민해봤다.
이 문제에서는 큰 수를 만들기 위해, 각 자리가 큰 수에 적합한지 판단하는 순간이 존재한다.
이 순간을 그리디 알고리즘의 관점에서 보면, 다음과 같이 생각할 수 있다.
내 앞에 있는 수보다 작으면 탈락
따라서, now 변수에 판단할 현재 숫자를 저장해두고, 내 앞에 있는 수가 나보다 작은 경우, 해당 수를 탈락시켰다.
function solution(number, k) {
var stack = [];
for (var i = 0; i < number.length; i++) {
var now = number[i];
while (k > 0 && stack[stack.length - 1] < now) {
stack.pop();
k--;
}
stack.push(now);
}
stack.splice(stack.length - k, k);
var answer = stack.join('');
return answer;
}