js 프로그래머스 3진법 뒤집기

이명진·2022년 9월 15일
0

코드카타

목록 보기
40/69

문제요약

자연수가 주어지는데 3진법으로 변환하고 뒤집고 다시 10진법으로 변환하면 된다.
문제는 어렵다고 생각했는데 그냥 순서대로 풀었다.

내가 푼풀이

function solution(n) {
    let answer = n.toString(3).split('').reverse().join('')
  	answer=parseInt(answer,3)
    return answer;
}

말그대로 3진법으로 변환하고 배열로 만들고 뒤집고 합치고 10진법으로 변환시켜주었다.
결과는 올클리어 생각보다 쉽게 풀었다.

다른사람의 풀이

const solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}

놀랍다. 전개연산자를 사용했다.
parseInt 함수안에서 전개연산자를 사용하고 뒤집고 다시 합쳐주고 함수를 진행시켰다.
대단한분들이 많다.


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);   
}

내장함수를 사용하지 않고 푸신 분에서 가져왔다. 하나씩 훑어봤다.
3진법으로 변환은 3으로 나눈 값을 소수점 빼고 배열에 밀어 넣은다음에
각 값들에서 인덱스 값으로 3제곱근을 구한뒤에 곱해주고 누적값을 구했다.
내장함수를 사용하지 않은 분들 이미 수학에 익숙하여서 내장함수 없이 구현한것 같다.
대단하신분들이다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글