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

[프로그래머스][자바스크립트][Level2] 124 나라의 숫자

by Benjamin_Choi 2021. 7. 21.
function solution(n) {
    var answer = new Array(18).fill(0);
    var num = n;
    for (let i = 18; i > -1; i--) {
        const powNum = Math.pow(3, i);
        if (i === 0) {
            answer[i] === num;  
        } if (num >= powNum * 2) {
            answer[i] = 2;
            num-=powNum*2;
        } else if (num >= powNum) {
            answer[i] = 1;
            num-=powNum;
        }
    }       
    answer.reverse();
    while (true) {
        answer = answer.slice(answer.findIndex(item => item > 0));
        if (answer.indexOf(0) === -1) {
            break;
        }
        for (let i=1; i<answer.length; i++) {
            if (answer[i-1] > 0 && answer[i] === 0) {
                answer[i-1]-=1;
                answer[i] = 3;
            }
        }    
    }
    return answer.filter(item => item !==0).map(item => {
        if (item === 3) return 4;
        else return item;
    }).join("");
}

3진법 접근은 좋았다. 그리곤 큰 수부터 쪼개고 뺄게 아니라 뒤에서부터 %로 나눠가면서 처리하는게 더 좋았을 것 같다. 

그래도 고생했다.

댓글