124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
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이하의 자연수 입니다.
n result 1 1 2 2 3 4 4 11
function solution(n) {
//4 = 3*1 +1 => 11
//6 = 3*2 + 0 => 14
//10 = 3*3 +1 => 41
let answer = '';
while(n > 0){
//rest only can be 1,2,0
let arr = [4,1,2]
let rest = (n%3);
n = Math.floor(n/3);
//chage n when rest 0
if(rest === 0){
n -= 1;
}
answer = arr[rest] + answer;
}
return answer;
}
function solution(n) {
//4 = 3*1 +1 => 11
//10 = 3*3 +1 => 41
let answer = '';
while(n > 0){
//rest only can be 1,2,0
let arr = [4,1,2]
let rest = (n%3);
n = Math.floor((n - 1) / 3);
//chage n when rest 0
answer = arr[rest] + answer;
}
return answer;
}
레벨 2로 들어오고 나서 자료구조나 수학적 상식이 없으면 풀기 힘든문제들이 많은 것 같다.
이 문제 하나에 왜이렇게 해맷는지 모르겠다..
다른 분들 보니 애초에 n과 n-1로처리했을때의 차이가 없다는 것을 인식하고 n-1로 모든 처리를 하여 더욱 쉬운 방식으로 해결했다.
처음에는 rest === 0 인 경우 n -=1 을 해줘야한다는 것을
생각하지 않아 조금 해맸는것이 .. 안타깝다 🥺.. 결국 나머지가 0이 나온 뒤 하나의 수를 빼고 다시 실행을 하면 그 다음에 해당하는 케이스가 나오게 되는 것인데 ㅎㅎ... 그대로 진행하면 다음 수로 진행하지 않고 계속 나누기만 실행하여 다른 결과가 나오게 된다.
끝!