진법 변환 (JS)

KIP·2022년 6월 28일
0

알면 쉽고 모르면 어려운 진법 변환 문제

프로그래머스에 3진법이라는 문제

10진법인 숫자n을 3진법으로 바꾼 후 그 배열을 앞 뒤로 뒤집는다
그 뒤 다시 3진법인 숫자를 10진법으로 변환하는 문제.

기본적으로 알아야할 문법

2,8,16진법
const a =10
const b= 14;

a.toString(2/8/16) => 10진법-> n(2/8/16)진법으로
or 

Numnber.parseInt(값, 2/8/16); n(2/8/16)진법-> 10진법으로 

const a = [1,2,3,4]
const b= ['1','2','3','4']
const ato = a.map(Number)
const bto = b.map(Number)
console.log(typeof ato[0]) // 전부 number
console.log(typeof bto[0]) // 전부 number
console.log(typeof cto[0]) // 전부 string
const c= "1,2,3,4";
console.log(c.split(",")) // ['1','2','3','4'] 배열 반환

풀었던 문제의 코드

function solution(n){
    // 10진법을 3진법으로
    const three= n.toString(3);
    // 거꾸로 넣을 배열 생성
    const invertThree = []
    // 3진법의 숫자갯수만큼 숫자를 돌림
    for(let i = three.length-1 ; i >= 0; i-- ){
        invertThree.push(three[i])
    }
    // 배열-> 문자열로 변환한 뒤 ,을 제거
    const a = invertThree.toString().replace(/[,]/g,"")
    // 3진법을 10진법으로 바꿈
    return parseInt(a,3)
   

}
solution(50)

0개의 댓글