알면 쉽고 모르면 어려운 진법 변환 문제
프로그래머스에 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)