문제분석
자연수 n이 매개변수로 주어지면, n을 3진법 상에서 앞뒤로 뒤집은 후
이를 다시 10진법으로 표현한 수를 return하는 함수 만들기
제한조건
n은 1이상 100,000,000이하인 자연수
문제풀이
1단계 : n을 3진법으로 표현한다
2단계 : 3진법으로 표현한 수를 뒤집는다
3단계 : 뒤집어진 수를 다시 10진법으로 표현한다
// 재귀함수 풀이
let result="";
function solution(n) {
let temp = parseInt(n/3,10);
if(temp<=2){
result = result + String(parseInt(n%3,10)) + temp;
if(parseInt(result,10)===10){
return 1;
}
result = result.split('').map((data,index)=>parseInt((data),10)*Math.pow(3,result.length-index- 1)).reduce((a,b)=>a+=b);
return result;
}
result = result + String(parseInt(n%3,10));
return solution(temp);
}
다른 사람 풀이
* Spread Operator를 문자열에 적용하면 배열로 리턴가능
* parseInt()는 문자열을 숫자로, toString()은 숫자를 문자열의 형태로 변환 (진수 설정 가능)
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}