[프로그래머스 Level 1] 3진법 뒤집기 javascript

IT공부중·2021년 1월 4일
0

알고리즘

목록 보기
43/49

https://programmers.co.kr/learn/courses/30/lessons/68935


function solution(n) {
    const answer = [];
    
    while(n !== 0) {
        answer.unshift(n % 3);
        n = Math.floor(n / 3);
    }

    return answer.reduce((total, now, index) =>  total + now * (3 ** index),0)
}

3진법으로 변환하기 위해서 n % 3 을 한 값을 넣어준다. 그리고 n 을 n /3 한 값으로 바꿔주면서 반복을 해주면 3진법으로 변환 된다. 이 때 unshift로 넣었기 때문에 이미 뒤집어진 것과 마찬가지가 된다.

reduce를 통해 index 제곱 한만큼을 더해주면 된다.

또 다른 방법으로는 toString을 활용하는 방법이다.

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

n을 toString(3)을 통해 3진법으로 변환하고, 뒤집어서 다시 string으로 만들어준다.
그리고 parseInt를 통해 10진법으로 다시 바꿔주면 된다.

Number.prototype.toString 과 parseInt 둘다 radix 값으로 2~36사이의 값을 받는다.

profile
3년차 프론트엔드 개발자 문건우입니다.

0개의 댓글