[프로그래머스] 3진법 뒤집기😄

GoGoDev·2021년 5월 25일
0

Programmers Lv.1🌱

목록 보기
13/46
post-thumbnail

[프로그래머스] 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를 통해서도 소수점을 버릴 수 있다.

profile
🐣차근차근 무럭무럭🐣

0개의 댓글