문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
n(10진법) | n(3진법) | 앞뒤 반전 (3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
풀이
1. toString()을 이용해 먼저 10진법을 3진법으로 만들어준다!
2. splite()을 이용해 배열로 만든 후
3. reverse()로 앞뒤 반전을 시킨고 join()을 통해 배열에서 문자열로 변환한다.
4. 마지막으로 앞뒤 반전한 3진법을 pareseInt()를 통해 10진법으로 바꿔준다.
여기서 좀 헷갈렸던 부분은 parseInt()부분이었다.
parseInt()함수는 기본적으로 10진로 해석을 한다. 그렇기에 parseInt(num,3)은 3진수인 num('0021')을 parseInt()를 통해 10진수로 변환한다는 뜻이 된다!
이 점을 모르고 계속해서 parseInt(num,10) 이렇게 했지만 나중에 parseInt는 기본적으로 10진수라는 사실을 알게되어 살짝 허무한 감이 있었지만 이런 부분에서 새로운 것을 얻어가서 좀 더 뜻깊은 실수가 되었던 것 같다!
function solution(n) {
let num = n.toString(3).split('').reverse().join('')
return parseInt(num,3);
}