function solution(n) {
const answer = [];
while(n !== 0) {
answer.unshift(n % 3);
n = Math.floor(n / 3);
}
return answer.reduce((total, now, index) => total + now * (3 ** index),0)
}
3진법으로 변환하기 위해서 n % 3 을 한 값을 넣어준다. 그리고 n 을 n /3 한 값으로 바꿔주면서 반복을 해주면 3진법으로 변환 된다. 이 때 unshift로 넣었기 때문에 이미 뒤집어진 것과 마찬가지가 된다.
reduce를 통해 index 제곱 한만큼을 더해주면 된다.
또 다른 방법으로는 toString을 활용하는 방법이다.
function solution(n) {
const threeString = n.toString(3).split('').reverse().join('');
return parseInt(threeString, 3);
}
n을 toString(3)을 통해 3진법으로 변환하고, 뒤집어서 다시 string으로 만들어준다.
그리고 parseInt를 통해 10진법으로 다시 바꿔주면 된다.
Number.prototype.toString 과 parseInt 둘다 radix 값으로 2~36사이의 값을 받는다.