テストエンコーディング|(JavaScript)プログラマー:ハッシュ数


に質問


正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.

制限

  • xは、1または10000より大きい整数である.
  • 🎹📢I/O例



    ほどく

    function solution(x) {
        let answer = true;
        let number = x;
        let sum = 0;
        
        // 10으로 나눈 나머지 값을 더해주고 기존의 값을 10으로 나누어준다.
        while(number > 0){
            sum += number % 10;
            number /= 10;
            
            // 정수형으로 변환하지 않으면 float가 되어버린다.
            number = parseInt(number); 
        }
        answer = (x % sum == 0);
        return answer;
    }
    
    // 또 다른 방법
    function solution(x) {
        let answer = true;
        let sum = 0;
      
        x.toString().split('').map(value => sum += Math.floor(value));
        answer = (x % sum == 0);
      
        return answer;
    }
    JAvascriptはintとfloatを明確に区切っていないので、それらの動的変換をチェックし、intタイプに変換します.これもC++で解けるようです.提出してよく考えてみると、ParseIntは四捨五入で、もしあなたが望む結果が正しいなら、Math.床関数はもっと適切だと思います.
    Javascriptでは、数値をStringに変換してString関連関数を使用する強力な機能の1つと考えられているので、split関数を使用して簡単にビット数を分割できます.ただし文字列として認識されるため、変換を再開する必要がある.だからスピードの面では少し損をするかもしれませんが、細かいのはもっと速い?!ああ...GOOD!!
    プログラマーは、問題全体を改編したのか、他の人の答えは改編前だと指導した.

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

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