코딩테스트

[JS] 월간 코드 챌린지 시즌1 > 3진법 뒤집기

차차한 2022. 8. 12. 15:36

자연수 n이 매개변수로 주어집니다. 

n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

function solution(n) {
    var answer = n.toString(3);

    const arr = [...answer].reverse();

    return parseInt(arr.join(""), 3);
}

내 문제 풀이

n을 먼저 3진법으로 바꾸기 위해 toString(3)을 사용했다.

3진법 수를 앞뒤로 뒤집어해서 reverse()를 사용하려 했는데 이 함수는 배열에서만 사용가능하다해서 전개연산자를 이용해 answer를 배열에 담아주고 리버스했다.

이걸 다시 10진법으로 바꿔야 하는데 arr이 지금 배열 상태로 ["0","0","2","1"] 처럼 들어가있기 때문에 join으로 배열 요소의 값을 하나로 합쳐줬다. 

그 후에 parseInt로 10진법으로 바꿔줬다!

10진법에서 n진법으로 변환할 때는 toString(n)이면 되지만

n진법에서 10진법으로 변환할 때는 parseInt( 숫자, n)처럼 써줘야 값이 변환된다~!

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

다른 사람 문제 풀이

화살표 함수를 이용해서 간단하게 작성해놨다.

문제에 쓰인 함수는 똑같은데 이렇게 표현할 수도 있는 것을 배우게 됐다.