[TIL] 2023.09.06 Programmers_3진법 뒤집기

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);
}
  1. `toString()`을 이용해서 n을 3진법으로 변환 후 `split()`해서 한 글자씩 쪼갠 후 반대로 뒤집고 다시 문자열로 합친다.
  2. 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