프로그래머스 문제풀이 - 124 나라의 숫자 (Javascript)

alvin·2021년 1월 23일
0

알고리즘

목록 보기
1/9

문제

https://programmers.co.kr/learn/courses/30/lessons/12899

코드

function solution(n) {
    let answer = "";
    const nums = [4, 1, 2];

    while (n > 0) {
        answer = `${nums[n % 3]}${answer}`;
        n = n % 3 === 0 ? n / 3 - 1 : Math.floor(n / 3);
    }

    return answer;
}

풀이

3진법을 응용하면 풀 수 있는 문제입니다.

|10진법|3진법|124나라의 숫자|
|---|---|---|
|1|1|1|
|2|2|2|
|3|10|4|
|4|11|11|
|5|12|12|
|6|20|14|
|7|21|21|
|...|...|

10진법 -> 3진법으로 변환할 때와 똑같이 풀되, 규칙을 파악해보면 3진법이 124나라의 숫자표기보다 자리올림이 한 차례 더 빨리 된다는 것을 알 수 있습니다. (3진법은 3에서 자리올림 되지만, 124나라의 표기법은 4 다음에 자리올림 되기 때문)

따라서, 나머지가 0, 1, 2일 때 각각 4, 1, 2를 매핑시키면 되고, 위에서 설명한 이유 때문에 나머지가 0인 경우에는 몫에서 1을 빼주어야 합니다. (124 나라 숫자보다 빨리 올라간 자리올림 수를 빼주는 것)

profile
주니어 웹 프론트엔드/백엔드 개발자 입니다. 서브 프로젝트를 굉장히 좋아하고, velog에 기록으로 남기고 있습니다.

0개의 댓글