[javascript-algorithm]プログラマー-2つの整数の和


(1)問題リンク


https://programmers.co.kr/learn/courses/30/lessons/12912

(2)解答と解説1


-問題を解く

        let a = 3;
        let b = 5;

        function solution1(a, b){
            let answer = 0;

            for(i = Math.min(a, b); i <= Math.max(a, b); i++) answer += i

            return answer;
        }

        console.log(solution1(a, b)) // 12

-問題の説明

  • for文を使用して繰り返します.i初期値はMathです.min()関数でa,bの最小値を指定します.なお、終了条件はMathである.max()関数でa,bの最大値を指定します.
  • 文を繰り返すたびに,答えにiを蓄積して割り当てる.
  • (2)問題解きと説明2


    -問題を解く

            let a = 3;
            let b = 5;
    
            function solution2(a, b){
                var answer = 0
    
                return (a+b)*(Math.abs(b-a)+1)/2;
            }
    
            console.log(solution2(a, b)) // 12

    -問題の説明


    等差数列の和(Gauss式)を用いて計算を行う.等差数列の和を求める場合は、第1項と最後項を加え、項数を乗じて2で割る.

    (2)問題解きと解説3


    -問題を解く

            let a = 3;
            let b = 5;
    
            function solution3(a, b){
                var answer = (a<b) ? a : b;
    
                while(a!=b){
                    answer += (a<b) ? ++a : ++b;
                }
    
                return answer;
            }
    
            console.log(solution3(a, b)) // 12

    -問題の説明

  • の3つの演算子を使用して、答え変数に2つの最小値を割り当てます.
  • ドアを使用します.条件式は、aがbに等しくない場合に繰り返し実行される.
  • の第1の周期では、++aによって増減する4が割り当てられ、次の周期では++aによって増減する5が割り当てられる.
  • (3)参考資料

  • Math.min()
  • Math.max()
  • 等差数列の和(ガウス式)
  • Math.abs()