자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
function solution(n) {
let answer = 0;
let trit = ''
// 3진법 구하기 인수분해
while (n > 0) {
trit = n % 3 + trit
n = parseInt(n / 3)
}
const reverseTrit = trit.split('').reverse()
const length = reverseTrit.length
let pow = 1
// 10진법으로 변환
for (let i = 0; i < length; ++i) {
answer += reverseTrit[length - 1 - i] * pow
pow *= 3
}
return answer
}
쉬운 문제라고 생각했는데, 10진법으로 변환하는 과정에서 깔끔하게 코드를 작성하고싶어서 [length - 1 - i]
라는 순서 규칙 찾는 것도 시간이 좀 걸렸고, Math.pow()를 알고 있었지만, pow를 직접 구현해야지 생각하고 시도했지만 쉬운 것인데도 불구하고 헛짓거리를 했었다. 그래도 재밌었던 문제!
const solution = (n) => parseInt([...n.toString(3)].reverse().join(""), 3);
다른 사람의 풀이를 보고.. 자바스크립트의 기본 제공 함수들이 엄청나다는걸 다시 한번 느낀다.. 저렇게 쉽게 진수 표현을 할 수 있다니!!! 자주 썼던 함수인데도 간과하고 있었다 ㅋㅋㅋ
참고 자료 및 사이트 (감사합니다)