프로그래머스 코딩테스트 레벨1.3진법 뒤집기(JavaScript)

부기·2022년 1월 30일

문제 설명

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

n은 1 이상 100,000,000 이하인 자연수입니다.

내 코드

function solution(n) {
  let answer = 0;
  let ternary = n.toString(3);
  let reverse = ternary.split('').reverse().join('');
  answer = parseInt(reverse, 3);
  return answer;
}

풀이과정

  1. 10진법주어짐(n) -> 3진법 변환하기 -> 3진법 변환한 것을 reverse하기 -> 10진법으로 변환하기 이 순서로 구현해봐야겠다고 생각했다.
  2. 따라서 먼저 ternary변수를 만들고 n.toString(3)-> n을 3진법으로 변환하겠다는 코드이다. 10진법에서 -> 다른 진법으로 변환할때는 toString()을 사용한다.

    toString(radix)

    • radix (Optional):
      숫자 및 BigInts의 경우 toString()은 선택적으로 기수(radix)를 매개변수로 취하며, 기수의 값은 최소 2부터 36까지이다.
      기수를 이용함으로써 10진수를 (1, 2, 3, 4, 5...) 다른 진수로 변환할 수 있다.
  3. 10진법에서 3진법으로 변환된 값이 들어있는 ternary를 가지고 바로 reverse하고 싶지만 자바스크립트에서는 문자열을 바로 reverse하는 함수는 없다. 하지만 변수는 뒤집을 수 있는 reverse 함수가 있다.
  4. 따라서 ternary를 split으로 쪼개서 새로운 배열로 만들어 준다. 이 후 이 배열을 reverse해주고 그걸 다시 join을 통해서 문자열로 만들어 준다.
  5. 마지막으로 다른 진법에서 10진법으로 변환할 때에서는 parseInt를 사용하면 된다.

parseInt(string, radix)

  • string: 파싱할 값.
  • radix (Optional): string의 진수를 나타내는 2부터 36까지의 정수.
profile
무럭무럭 자라는 중 ∙∙∙🌱🐣

0개의 댓글