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

쿼카쿼카·2022년 9월 15일
0

알고리즘

목록 보기
17/67

문제

코드

function solution(n) {
    // 내가 푼 풀이
    if(n < 3) return n;
    const arr = [];
    while(1) {
        arr.push(n%3);
        n = Math.floor(n/3);
        if(n<3) {
            arr.push(n);
            break;
        }
    }
    return arr.reverse()
              .map((val, i) => val*(3**i))
              .reduce((acc, cur) => acc+cur);
    
    // toString(3) 과 parseInt(,3) 이용
    return parseInt(n.toString(3).split('').reverse().join(''), 3);
}

내가 푼 풀이

  • 첫 줄인 if(n<3)을 안 넣으니 3보다 작은 수에서 오답이 나왔고, 추가하니 모두 정답이 되었다.
  • string을 reverse하기 위해서는 split으로 배열 변환 후 reverse하여 join으로 합쳐야 한다.

toString(n)과 parseInt(,n)

  • toString(n)의 n에 2~36 사이의 숫자를 넣으면 해당 진법에 맞게 변환된다.
  • parseInt도 마찬가지로 parseInt('12414', n)에서 n에 2~36 사이 숫자를 넣으면 해당 진법에 맞게 변환된다.
    • parseInt('110', 2) => 6
    • parseInt('0xFkk) => 15(0x가 있으면 자동으로 16진법으로 인식. k는 16진법 벗어난 문자로 판단하여 F까지만 변환

참고 사이트

profile
쿼카에요

0개의 댓글