ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lv1)JS-3진법 뒤집기
    공부/프로그래머스 2022. 1. 7. 21:33

    문제링크

     

    느낀점

    3진법을 어떻게하면 직접 만들 수 있을까를 먼저 생각해보았다. 그러다 공식문서를 보았고 2진법,3진법... 다른 진법을 봐도 변환이 어떻게 이루어져야 될지 감이 잡히지 않았다. 그래서 검색을 통해서 10진법을 2진법으로 만드는 내장함수를 알게 되었고 그 이후 부터는 쉽게 풀 수 있게 되었다. 내장함수를 이용하지 않고는 어떻게 풀어야 하는지 정리가 되지 않지만 다른 사람이 푼 풀이에서는 내장 함수를 이용하지 않고 풀었는데 정말.... 대단하다.....

    그리고 Math.log를 알게 되었는데 이는 밑을 10과 2로만 받을 수 있어서 사용하는데 제한적인거 같다.

    10진법에서 다른 진법으로 변환시 toString을 이용할 수 있다는 것을 확인하는 시간이 되었다.

     

    내가 푼 방법

    function solution(n) {
        //10진수를 다른 진수로 변환 시키려고 할때는 toString(다른진수)
        let reverseNum = n.toString(3).split('').reverse().join("");
        return parseInt(reverseNum, 3);
    }

     

    다른 방법(내장함수 사용 X)

    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);   
    }

    3진법은 0,1,2를 활용하기 때문에 3으로 나누었을때 나머지를 answer 배열에 넣어주고 floor메서드를 이용해서 소수점자리를 지우고 내려주면서 배열에 숫자를 정리한다고 보면된다. 후에 제곱을 이용해서 각자리수에 맞게 곱해주면 되는거 같다.

     

    reference

    참고1

    '공부 > 프로그래머스' 카테고리의 다른 글

    Lv1)JS-최소직사각형  (0) 2022.01.11
    Lv1)JS-예산  (0) 2022.01.08
    Lv1)JS-약수의개수와덧셈  (0) 2022.01.07
    Lv1)JS-실패율  (0) 2022.01.06
    Lv1)JS-포켓몬  (0) 2022.01.05

    댓글

Designed by Tistory.