본문 바로가기
알고리즘/프로그래머스

[프로그래머스][자바스크립트][Level2] 큰 수 만들기

by Benjamin_Choi 2022. 1. 8.

풀이

 

/**
 * 큰 수 만들기
 * 탐욕법
 * https://programmers.co.kr/learn/courses/30/lessons/42883?language=javascript
 */
 
function solution(number, k) {
    var answer = [];
    let i = 0, j = 0;
    while(i < k) {
        if (answer.length === 0 || (number[j] && answer[answer.length - 1] >= number[j])) {
            answer.push(number[j]);
            j++;
        } else {
            answer.pop();
            i++;      
        }
    }
    return answer.join("") + number.slice(j);
}

자릿수가 큰 숫자의 크기가 커질수록 전체 수의 크기도 커진다. 

예를 들어 3924 에서 1개를 빼서 가장 큰 수를 만든다고 했을 때, 가장 작은 숫자는 2 이지만 2보다 큰 3이 1000의 자리 수 이므로 3을 삭제하는 편이 924로 더 큰 수가 된다. 

그런데 만약 3924 가 아닌 3294 에서 1개를 삭제해야한다면, 3을 삭제해버리면 294로 2를 삭제한 394보다 더 작아져버린다. 결국 자리수가 큰 숫자가 커질 수 있도록 하는 방식으로 접근하는 것이 핵심이다.

댓글