テストエンコーディング|(JavaScript)プログラマー:バイナリの反転


に質問


パラメータは自然数nを与える.nを三進法で前後に逆さまにし、それを十進法で表す数で返し、解関数を完成させる.

制限

  • nは1000000を超える自然数である.
  • 🎹📢I/O例



    ほどく

    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);
    他人の答えを見て...javascriptの内蔵関数が非常に強いことを改めて感じました...そんなに简単に表现できるのは本当にすばらしいです!!よく使う関数ですが、無視しました.

    参考資料とサイト(ありがとうございます)

  • https://programmers.co.kr/learn/courses/30/lessons/68935