코딩 기록/자바스크립트 알고리즘

(자바스크립트 알고리즘) 3진법 뒤집기 - kimyang-sun

kimyang-Sun 2020. 10. 18. 16:10

자바스크립트 알고리즘 (Programmers)


문제 설명

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

 

제한 조건

 

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

 

 

입출력 예


문제 풀이

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

풀이입니다.

 

n을 toString(3) 을 이용하여 3진수로 만들어주고 split("") 으로 배열로 만들어줍니다.

reverse()를 이용하여 배열을 반대로 정렬하고 그값을 join("")하여 다시 문자열로 합쳐준 후에

 

parseInt(answer, 3)을 통해 3진수가 되어있는 값을 본래의 10진법인 값의 정수로 만들어줍니다.

 

다른 사람들의 풀이

function solution(n) {
    const answer = [];
    while(n !== 0) {
        answer.unshift(n % 3);
        n = Math.floor(n/3);
    }
    return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0);   
}