자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution함수를 완성해주세요.
n은 1 이상 100,000,000 이하인 자연수입니다.| n | result |
|---|---|
| 45 | 7 |
| 125 | 229 |
답을 도출하는 과정은 다음과 같습니다.
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
|---|---|---|---|
| 45 | 1200 | 0021 | 7 |
7을 return 해야 합니다.답을 도출하는 과정은 다음과 같습니다.
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
|---|---|---|---|
| 125 | 11122 | 22111 | 229 |
229를 return 해야 합니다.function to3Reverse(n) {
let result = '';
while(n > 0) {
result += n % 3;
n = Math.floor(n / 3);
}
return result;
}
function to10(n) {
n += '';
let result = 0;
for(let i = 0; i < n.length; i++) {
result += +n.charAt(n.length - i - 1) * (3 ** i);
}
return result;
}
function solution(n) {
var answer = to10(to3Reverse(n));
return answer;
}

진법 변환 문제는 항상 진법 -> 진법해주는 함수들을 정의해서 푸는 편
문제에서 편했던 점은 3진법 변환 시 reverse를 안해도 된다는 점이다!
string.split('').reverse().join() : JavaScript에서 문자열을 reverse해주는 방법
JavaScript는 나누기 연산을 할 때 소수까지 나오므로 꼭 Math.floor()를 해주어야 하겠다