📝 문제풀이/프로그래머스

[Level 1] 3진법 뒤집기

NoHack 2022. 2. 27. 16:13
728x90

문제 설명

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

제한 조건

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

문제 풀이

const solution = (n) => {
  const trinary = [];
  let result = 0;

  while (n !== 0) {
    trinary.unshift(n % 3);
    n = Math.floor(n / 3);
  }

  let num = 1;
  for (let i = 0; i < trinary.length; i++, num *= 3) {
    result = result + num * trinary[i];
  }

  return result;
};

const inputs = [45, 125];
inputs.forEach((input) => console.log(solution(input)));

10진수를 2진수로 변환하는 공식을 그대로 사용하여 3진수로 변환한 다음 각 자리의 값을 trinary 배열에 저장했습니다. 문제에서는 변환한 3진수 값을 역순으로 반전하라 했는데 굳이 반전하지 않고, 반복문을 참조할 때 방향만 잘 신경 쓰면 됩니다.