카테고리 없음

문제 40. 3진법 뒤집기(난이도 5)(진법 변환)

kagan-draca 2024. 7. 23. 17:54

 

처음에는 

 

function solution(n)
{
    let answer = []
    while(n > 0)
    {
        answer.push(n % 3)
        n = parseInt(n / 3)
    }
    return answer.reverse().reduce((acc, cur, index)=> acc+= cur * Math.pow(3, index))
}

 

같이 반복문으로 3진수를 만들 수 밖에 없었다...

(반복문 없이 방법을 모르겠어서...)

 

문제를 다 풀고 다른 사람들의 코드를 분석해보니

 

toString()함수의 매개변수에 숫자를 넣을 경우

ex) toString(number)

매개 변수에 넣은 숫자의 진법으로 표기를 해줬다.

 

toString의 진법 표현을 보니깐,

이전 문제에서 parseInt() 진법 변환

표기가 기억에 났다.

 

이전 학습한 parseInt()도 매개변수로 

ex) parseInt(변환할 값, 진법)

 

위의 두 toString()과 parseInt()를 사용해 알고리즘을

더 간략화 시켜주었다.

 

제출한 코드 : 

 

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