본문 바로가기
알고리즘

[프로그래머스] 진수 변환하기 - toString(n), parseInt(n진수, n)

by limew 2023. 6. 6.

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

 

첫번쨰 방법

  • 전통적 수학 진법 구하는 방식으로 3씩 나눠서 나머지를 remains에다 넣어주고, 마지막 남은 몫까지 넣어준 뒤,  각 자리수 * 3의 n제곱의 합을 리턴했다.
  • 3**i = Math.pow(3, i)
function solution(n) {
    let remains = [];
    while(n >= 3) {
        remains.unshift(n % 3);
        n = Math.floor(n / 3);
    }
    remains.unshift(n);
    return remains.reduce((acc, curr, i) => {
        acc += curr * 3**i; //  Math.pow(3, i) = 3**i
        return acc;
    }, 0);
}

 

 

두번째

쉽게 진수변환하는 방법을 찾았다 O.O;;

 

10진수 → n진수

10진수.toString(n) : string

12.toString(2) // 2진수 string타입으로 '1100'

n진수 → 10진수

parseInt(n진수, n)

parseInt(1100, 2) // 2진수에서 10진수로 12

n진수 → m진수

n진수를 10진수로 바꾼뒤 m진수로 변환

parseInt(1100, 2).toString(16); // 2진수에서 16진수로

 

n을 3진법으로 구한뒤 reverse하고 다시 10진수로 변환

function solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}