[javascript-algorithm]プログラマー-残高の計算


(1)問題リンク


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

(2)解答と解説1


-問題を解く

        let price = 3;
        let money = 20;
        let count = 4;

        function solution1(price, money, count){
            let answer = 0;

            for(let i = 1; i <= count; i++) answer += price * i

            return answer > money ? answer - money : 0;
        }

        console.log(solution1(price, money, count)); // 10

-問題の説明

  • for文を使用して、iがconut以下の場合、繰り返し実行されます.
  • 変数の答えでは、各ラウンドで増加した価格*i値が加算されます.
  • の3つの演算子を使用して、必要な金額の答えが保有金額より大きい場合、必要な金額-保有金額を出力し、不足しなければ0を出力します.
  • (2)問題解きと説明2


    -問題を解く

            let price = 3;
            let money = 20;
            let count = 4;
    
            function solution2(price, money, count) {
                const tmp = price * count * (count + 1) / 2 - money;
                return tmp > 0 ? tmp : 0;
            }
    
            console.log(solution2(price, money, count)) // 10

    -問題の説明

  • 等差数列の和(1からxの和=n*(n+1)/2)を用いる.
  • の場合は価格の倍数を乗じなければならないので、価格を前に乗じます.
  • 最終価格count(count+1)/2は必要金額であり、控除金額は、必要金額と保有金額との差を求める.
  • の3つの演算子を用いて、必要な金額-保有金額を含む変数tmpの値が0より大きい場合、tmpを返し、小さい場合、0を返します.
  • (2)問題解きと解説3


    -問題を解く

            let price = 3;
            let money = 20;
            let count = 4;
    
            const solution3 = (...list) => Math.max(list[0] * list[2] * ++list[2] / 2 - list[1], 0);
    
            console.log(solution3(price, money, count)) // 10

    -問題の説明

  • 矢印関数を生成し、restパラメータを使用してパラメータリストにパラメータを追加します.
  • 等差数列の和(1からxの和=n*(n+1)/2)を用いる.
  • ..._ 関数に入るパラメータのリストを表し、関数体の[0]がprice、[1]がmoney、[2]がconutです.つまりpricecount+count/2-moneyです.
  • Math.maxを用いて,上記の結果を0に置き,2つの数字のうちより大きな数字を返す.
  • (3)参考資料

  • 等差数列の和(ガウス式)
  • Restパラメータ(…)
  • JavaScript Spread構文とRest構文