プログラミングアルゴリズムLV.1-最大公倍数と最小公倍数

5178 ワード

リンク


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

📕説明する


function solution(n, m) {
    var answer = [];
    let gcd;
    let lcm;
    
    for (let i = 1; i <= n; i++) {
        if (n % i === 0 && m % i === 0) {
            gcd = i;
        }
    }
    
    lcm = gcd * (n / gcd) * (m / gcd);
    
    answer.push(gcd, lcm);
    
    return answer;
}
  • 題を解くと,当初はn<=mと仮定し,n>mであればfor文の余分な演算が増加する.その前にifゲートを加えて2つのより小さい数を通過させると、演算がより少なくなる可能性があります.
  • lcmを練習帳に書いてあるように書いたら複雑すぎて、結局lcm=n*m/gcdがもっときれいになったようです
  • 📘他人の解答


  • Math.absが絶対値を返す方法
  • ユークリッド湖の除法を知りました.
  • 3号線は、最後に別れるまで残りの部分を共有し続けるアルゴリズムです.
  • 一人で再実施した後、Mathを必要としない.abs
  • が必要かどうか分かりません.
  • が互いに反転して計算を続ける演算を再帰関数で表すことができることに気づいた.
  • 📘他の人の草


  • forゲート1号部分は変数を宣言するための空間にすぎないことに気づいた.
  • for Moon 2号部分は最終的に、trueが現れると動作し、falseが現れると停止するので、より多様な形式を使うことができることを発見しました.true、falseの構文だけでなく、変数値を指定し続け、true、falseの構文を作成することもできます.
  • let a;
    console.log(Boolean(a=0)); //false
    console.log(Boolean(a=1)); //true
  • var変数宣言はjavascriptエンジンがhoisting概念に基づいてscopeトップレベルとして認識し、初期化するためである可能性があります.

  • 📝整理する

  • かなり古いアルゴリズム,ユークリッドアーク除去法,
  • を理解した.
  • を加えた貴関数の解答を初めて理解しました.これからも私の解答に使います
  • for条件文で変数宣言をvarとする場合、hoisting概念に基づいて変数を個別に宣言するコードを記述する必要はありません.