자연수 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()
를 해주어야 하겠다