Coding test

[프로그래머스] 124 나라의 숫자 (Lv 2) - javascript

Jiwoo 2022. 5. 17. 16:06

문제

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

  1. 124 나라에는 자연수만 존재합니다.
  2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
 


 

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

  • 제한사항
    • n은 500,000,000이하의 자연수 입니다.
       

풀이

function solution(n) {

    let arr = [4,1,2]; // 1
    let answer = ''; 

    while(n) {
        answer = arr[n % 3] + answer; // 2
        n = n % 3 === 0 ? n/3 - 1 : Math.floor(n/3); // 3
    }
    return answer;
}

 
먼저 숫자가 만들어지는 규칙을 찾은 후, 풀어야 하는 문제다.
단순히 3진법으로 풀기에는 3진법보다 자릿수 올라가는게 한 단계 느려서 복잡했다.
 

  1. n을 3으로 나눈 나머지가 0이면 4, 1이면 1, 2면 2 가 자릿수에 들어간다.
    나머지를 인덱스로 하고 자릿수를 값으로 둔 배열을 만들면 [4,1,2]가 된다.
     
  2. n = 0이 되면 멈추는 반복문을 생성한다.
    자릿수는 arr[n%3]으로 구해주고, 이전 answer과 합쳐준다.
     
  3. 자릿수를 구한 후, n을 수정해준다.
    • n%3 = 1 or2 -> n = Math.floor(n/3)
    • n%3 = 0 -> n = n/3 - 1 (중요)
       
  • 정확도 테스트 결과


     

  • 효율성 테스트 결과


     


참고

after-newmoon.tistory.com