Programmers/Level 1

[프로그래머스 / JavaScript] - 3진법 뒤집기

LaKinRad 2022. 9. 19. 18:29

출처/프로그래머스

● 문제 설명

 

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

 

● 제한 사항

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

 

● 입출력 예

 

n result
45 7
125 229

 


나의 풀이

 

function solution(n) {
    return parseInt(n.toString(3).split('').reverse().join(''), 3);
}

 

function solution(n) {
    var ternaryArr = [];
    var result;
    const ternary = function(n){
        if(n < 3){
            ternaryArr.push(n);
            return;
        }
        ternaryArr.push(n % 3);
        n = Math.floor(n / 3);
        ternary(n);
    }
    
    ternary(n);
    
    result = ternaryArr.reverse().reduce(function(acc, v, i){
        acc += v * Math.pow(3, i);
        return acc;
    }, 0);
    
    return result;
}

 

이번 문제는 총 두 개의 코드를 짰다.

 

첫 번째 코드는 많이 알려져 있는 toString 함수와 parseInt 함수를 이용한 진수 변환 처리 방법을 사용하였고,

 

두 번째 코드는 재귀 함수와 reduce 함수를 이용하여 풀어보았다.

 

함수에 파라미터를 추가하여, 3 대신 다른 숫자 인수를 받으면 3진법을 제외한 나머지 진법들도 활용할 수 있을 것 같다.