문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
입출력 예 설명
답을 도출하는 과정은 다음과 같습니다.
입출력 예 #1
입출력 예 #2
내 답변
- 10 → 3진수로 바뀌는 숫자들은 모두 나눗셈으로 했을 때 마지막 몫 + 나머지숫자(뒷순서로 시작)이다.
- 45를 예시로 들어 3진법으로 바꾸자면 45/3 ⇒ 15 /나머지 0, 15/3 ⇒ 5/나머지 0, 5/3 ⇒ 1/ 나머지 2
→ 마지막 몫 1, 나머지 2, 나머지 0, 나머지 0 해서 1200이 나온다.
- 여기서 다시 1200에서 10진수로 바꾸자면 $1\times 3^3+2\times3^2+0\times3^1+0\times3^0$ 이렇게 계산하게 되면 45가 나온다.
어떻게 구현했는가
- 비구조화할당으로
[dividNum, dividRest]
선언하여 앞에는 매개변수, 뒤에는 0을 선언
do~while
으로 함수 divid
을 반복하여 [dividNum, dividRest]
에 저장시키고, 또한 빈배열에 dividRest
을 push
시킨다.
- 함수
divid
는 매개변수를 3으로 나눈 값과 3을 나눈 나머지 값을 return
한다.
- 맨 마지막으로 남은 값은 빈배열에
push
한다.
- push한 배열을 reduce로 저장된 값 +
Math.pow(3, 나머지값)
을 더해서 나온값을 return 한다.