코딩테스트 | (JavaScript) 프로그래머스 : 3진법 뒤집기

trevor1107·2021년 11월 10일
0

✅문제

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

❕ 제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

🎹📢입출력 예제

✍풀어보기

function solution(n) {
    let answer = 0;
    let trit = ''
    
    // 3진법 구하기 인수분해
    while (n > 0) {
        trit = n % 3 + trit
        n = parseInt(n / 3)
    }
    
    const reverseTrit = trit.split('').reverse()    
    const length = reverseTrit.length
    let pow = 1
    
    // 10진법으로 변환
    for (let i = 0; i < length; ++i) {
        answer += reverseTrit[length - 1 - i] * pow
        pow *= 3
    }
    
    return answer    
}

쉬운 문제라고 생각했는데, 10진법으로 변환하는 과정에서 깔끔하게 코드를 작성하고싶어서 [length - 1 - i] 라는 순서 규칙 찾는 것도 시간이 좀 걸렸고, Math.pow()를 알고 있었지만, pow를 직접 구현해야지 생각하고 시도했지만 쉬운 것인데도 불구하고 헛짓거리를 했었다. 그래도 재밌었던 문제!


🎈다른 사람의 풀이

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

다른 사람의 풀이를 보고.. 자바스크립트의 기본 제공 함수들이 엄청나다는걸 다시 한번 느낀다.. 저렇게 쉽게 진수 표현을 할 수 있다니!!! 자주 썼던 함수인데도 간과하고 있었다 ㅋㅋㅋ



참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글