PS:0

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

Juliie 2021. 8. 2. 05:40

링크

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

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr


문제 설명

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

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

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

10진법 124 나라 10진법 124 나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41

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


제한사항

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

문제 풀이

이 문제의 경우 모든 숫자를 0, 1, 2로 숫자를 표현하는 3진법과 비슷하기 때문에 여기서 힌트를 얻을 수 있다

공통점: 각 자릿수가  3^i (i = 0, 1, 2, ... )을 나타냄

차이점:

➡️ 3진수는 0을 사용하기 때문에 n%3을 이용해서 계산이 가능하다

➡️ 124 나라의 숫자의 경우 0이 없고 대신 4(10진수의 3...)가 있기 때문에

n%3이 0일 경우 변수에 4를 추가하고 1을 빼줘야한다(0이 없어서 안 빼주면 다음 자릿수에 1씩 밀려남)

 

1) 입력으로 받은 n을 0이 될때까지 반복문을 돌린다

2) n%3이 1 이상(true)라면 answer에 넣어준 뒤 3으로 나누고,  n%3이 0(false)이라면 answer에 4를 넣고 1을 빼준다

3) answer를 거꾸로 읽어야돼서 reverse하고 return!

 

 

function solution(n) {
    var answer = '';
    while(n/3) {
            if(n%3) {
                answer+=n%3;
                n = parseInt(n/3);
            }
            else {
                answer+=4;
                n = parseInt(n/3)-1;
            }
    }
    return answer.split("").reverse().join("");
    
}