[프로그래머스] 3진법 뒤집기
https://programmers.co.kr/learn/courses/30/lessons/68935
function solution(n) {
var answer = [];
while(n !== 0){
answer.push(n % 3)
n = parseInt(n / 3);
}
var sum = 0;
var len = answer.length;
for(let i = 0; i < len; i++){
sum += answer[i]*Math.pow(3, (len-1) - i);
}
return sum;
}
다른사람 풀이 (보고 머리를 세게 맞은거 같다)
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
function solution(n) {
const answer = [];
while(n !== 0) {
answer.unshift(n % 3);
n = Math.floor(n/3);
}
return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0);
}
pop: 맨뒤에 새로운 배열 값을 추가
unshift: 맨 앞에 새로운 배열 값을 추가
unshift를 사용하면 index값만큼 n제곱해주면 된다. (굳이 (len-1) - i를 할 필요가 없다.)
parseInt가 아닌 Math.floor를 통해서도 소수점을 버릴 수 있다.