문제분석
자연수 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); }