アルゴリズム学習3日目-問題解決(Javascript)


次の3つの問題に対して問題プールを作成しました.
プログラマ-練習問題-小数点以下の桁数を追加
プログラマー-練習問題-整数平方根を判別する
1.小数点以下の桁数を追加(q 22)
問題の説明
自然数Nが与えられた場合,Nの各数の和を求め,返される解関数を求める.
たとえば、N=123の場合、1+2+3=6を返します.
せいげんじょうけん
  • N範囲:10000000以下自然数

  • 入力N=123 , N=987しゅつりょく6 , 24私の答え
    function solution(n)
    {
        var answer = 0;
        //n=123 -> ['1','2','3']
        console.log(n); // 123
        console.log(n + ''); // '123'
        console.log(typeof(n + '')); // string
        
        function intTostrarray(number) {
            return (number + '').split(''); // (number + '')를 배열에 한 글자씩 나눠 저장
        }
        
        let nArray = new Array();
        nArray = intTostrarray(n);
        console.log(nArray); // ['1', '2', '3']
        // 초기값 0부터 시작, parseInt(number) 를 배열 처음부터 순차적으로 더한 값을 리턴
        answer = nArray.reduce((accumulator, number) => accumulator + parseInt(number),0);
        
        return answer;
    }
    mapとreduceが理解できずに半日うろうろしていたので、ビデオで全過程を見た後、Chrome開発者ツールのコンソールを自分で開けて、自分で操作して、理解が一番速いです.変数に関数を追加すると、関数を個別に宣言およびロードすることに反感を抱きます.
    他人の解答
    function getDayName(a,b){
      var dayList = ['FRI','SAT','SUN','MON','TUE','WED','THU'];
     
    分析が必要...
    2.整数平方根の判別(q 25)
    問題の説明
    任意の正の整数nについて、nがある正の整数xの二乗であるか否かを判断しようとする.
    nが正の整数xの平方である場合、x+1の平方を返し、nが正の整数xの平方でない場合、-1を返す関数を完了する.
    せいげんじょうけん
  • nは正の整数で、1より大きく、5000000000000未満です.

  • 入力n=121 , n=3しゅつりょく3 , -1
  • I/O例#1:121は正の整数11の二乗であり、144倍(11+1)を返します.
  • I/O例#2:3は、正の整数の二乗ではないため、-1を返します.
  • 私の答え
    function solution(n) {
        var answer = 0;
        let x = Math.sqrt(n) // n의 제곱근은 x
        // x가 정수인지 판별 후, true일 경우 (x+1)의 2제곱을, 아닐경우 -1 리턴
        answer = Number.isInteger(x) ? Math.pow(x+1, 2) : -1;
        return answer;
    }
    比較しました.
    他人の解答
    function solution(s){
        return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
    }
    作成中...
    コメントURL

  • 数値桁数の追加
    Javascript map、reduceを使用
    JavaScript配列Array。reduce()マイニング(ビデオ)
    JavaScript配列Array。map()マイニング(ビデオ)

  • 整数平方根の判別
    MDN-RegExp正規表現