3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해 주세요.
입출력 예
n | result |
45 | 7 |
125 | 229 |
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
나의 풀이
function solution(n) {
const ternary = n.toString(3).split('').reverse().join('');
return parseInt(ternary, 3);
}
- `toString()`을 이용해서 n을 3진법으로 변환 후 `split()`해서 한 글자씩 쪼갠 후 반대로 뒤집고 다시 문자열로 합친다.
- 1번에서 생성한 ternary를 `parseInt()`를 이용해 다시 10진법으로 변환한다.
toString()과 parseInt()의 차이점
toString()
let baseTenInt = 10;
console.log(baseTenInt.toString(2));
// "1010"이 출력됩니다
- 숫자를 문자로 변환
- 숫자 및 BigInts의 경우 파라미터로 number를 전달할 수 있는데 이것은 기수(radix)의 역할을 한다.
- 만약 `toString(3)`을 실행하는 경우 주어진 10진수를 3진수로 변환한다.
parseInt()
parseInt(string, radix);
- 문자를 숫자로 변환
- `parseInt()` 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환한다.
- string: 파싱할 값
- radix: string의 진수를 나타내는 2부터 36까지의 정수이다.
출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt