[프로그래머스] 124 나라의 숫자 JavaScript

·2024년 10월 27일

문제

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

입력

n : 3

출력

4

제한 사항

n은 50,000,000이하의 자연수 입니다.

내가 했던 풀이 방법

1부터 10까지의 수를 보면, 끝자리가 1, 2, 4가 반복되는 것을 알 수 있다. 그리고 4가 된 뒤부터는 앞자리의 수가 바뀌게 된다. 1 2 4 앞에 0이 있는 것과 같으므로 01 02 04 11 12 14 21 22 24 이렇게 앞자리가 0 1 2 4 이런 식으로 진행된다. 즉, 뒷자리부터 순서대로 [1, 2, 4] 중에 값을 넣어주면 된다.

  1. n을 3으로 나눈 나머지를 rest에 저장하고 n을 3으로 나눈 몫으로 덮어쓴다. rest가 0이었을 때는 4를 추가하고, 1이었을 때는 1을, 2일 때는 2를 추가해준다.
  2. rest가 0일 때는 1, 2일 때와는 조금 다른 점이 있다. 예를 들어 1일 때는 몫이 0이고 나머지가 1이다. 2는 몫이 0이고 나머지가 2이다. 하지만, 3일 때는 몫이 1이고 나머지가 0이다. 그러므로 나머지가 0으로 떨어질 경우에는 몫을 1 감소시켜주어야 규칙대로 적용할 수 있다.
  3. 1~2번을 n이 0이 될 때까지 반복해준다.

코드

function solution(n) {
    var answer = '';
    
    while(n>0) {
        let rest = n%3;
        n = Math.floor(n/3);
        
        if(rest===0) {
            answer = 4 + answer;
            n--;
        } else if(rest===1) {
            answer = 1 + answer;
        } else {
            answer = 2 + answer;
        }

    }

    return answer;
}

회고

표를 보면 금방 규칙이 떠올라서 어렵지 않게 풀이할 수 있는 문제였던 것 같다.

profile
Frontend🍓

0개의 댓글