📝 문제풀이/프로그래머스
[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진수 값을 역순으로 반전하라 했는데 굳이 반전하지 않고, 반복문을 참조할 때 방향만 잘 신경 쓰면 됩니다.