Lv.1 : 3진법 뒤집기 [JavaScript]

2022. 9. 20. 22:17Algorithm/프로그래머스

반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 


문제 풀이 

1) 처음 풀이

function solution(n) {
    var arr = [];
    var temp = n;
    var answer = 0;
    
   do{
       arr.unshift(temp%3);
       temp =parseInt(temp/ 3);
    } while(temp > 0)
        
    for(var i=0; i<arr.length; i++){
       if(arr[i] != 0) {
           answer += Math.pow(3, i) * arr[i];
       }
    }
    
    return answer;
}

arr에 unshift를 통해 3진법으로 변환한 수를 넣고

3진법을 10진법으로 변환하여 answer 출력

 

기본 내장함수를 모르니 다 하나하나 계산하게 되었다ㅜ

 

 

2) 다시 풀기

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

n을 3진법으로 변환 후 뒤집어 10진법으로 변환

 


* 10진수에서 n진수로 변환하기

 => 10진수.toString(n)

var num = ~숫자~;

var binary = num.toString(2); // 10진수->2진수
var octal = num.toString(8); // 10진수->8진수
var hex = num.toString(16); // 10진수->16진수

* n진수에서 10진수로 변환하기

 => parseInt(n진수, n)

var binary = ~2진수~;
var decimal = parseInt(binary, 2) // 2진수->10진수

var octal = ~8진수~;
var decimal = parseInt(octal, 8) // 8진수->10진수

var hex = ~16진수~;
var decimal = parseInt(hex, 16) // 16진수->10진수

* n진수에서 n진수로 변환하기

 => n진수를 10진수로 변환 후, 원하는 n진수로 변환

var binary = ~2진수~;
var hex = parseInt(binary, 2).toString(16); // 2진수->16진수

var hex = ~16진수~;
var octal = parseInt(hex, 16).toString(8); // 16진수->8진수

 

반응형