개발자/프로그래머스 알고리즘
코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 js ★★☆☆☆
YoungDogg
2022. 2. 7. 14:51
코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
구현문제다
const solution = (n) => {
let sum = 0;
let nArr = [];
//앞뒤 반전(3진법)
while(n >= 3){
nArr.push(n % 3);
n = Math.floor(n / 3);
}
nArr.push(n);
//console.log(`앞뒤반전 nArr:${nArr}, n:${n}`);
// 다시 앞뒤 바꿔서, 계산의 편의를 위해
let noZeroArr = [];
for(let i = nArr.length-1; i >= 0; i--){
noZeroArr.push(nArr[i]);
}
//console.log(`noZeroArr:${noZeroArr}`)
// 3진법을 10진법으로
for(let i = noZeroArr.length -1; i >= 0; i--){
if(noZeroArr[i] !== 0){
sum += noZeroArr[i] * Math.pow(3,i);
//console.log(`noZeroArr[${i}] * Math.pow(3,${i}):${noZeroArr[i]} *${ Math.pow(3,i)}, i:${i}`);
}
}
//console.log(sum);
return sum;
}