プログラミングアルゴリズムLV.1-整数平方根判別

8132 ワード

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

📕私の答え




なぜ
  • なのか分かりませんが、上記のように8番行の二乗は使いません.いろいろなテストをしてarrayだと気づきましたindexOfを使用して得られた数値では、演算子は機能しません.私がビジュアルスタジオで作ったとき、よく食べました.
  • です.
  • 、よく見ると、10号線だからそうなんだけど、ふふ…コードの配置順序は問題
  • です.
    さらに
  • を考えてみると,平方根判別を行う際に平方根に関する手法を用いることは,平方根判別関数の論理構造を学習する観点から,良い選択ではないようである.
  • function solution(n) {
        var answer;
        let integerArr = [0, 0];
        for (let i = 1; i <= Math.floor(Math.sqrt(50000000000000)); i++) {
            integerArr.push(i);
        }
        answer = integerArr.indexOf(Math.sqrt(n));
        if (integerArr.indexOf(Math.sqrt(n)) > 0) {
            answer = integerArr.indexOf(Math.sqrt(n)) ** 2;
        }
        return answer;
    }
    方法も多すぎて,所与の条件範囲内のすべての数を計算する配列を確立し,コードの速度の面でかなり非効率であるようだ.

    📘他人を解く



    上の解答を見て再適用した私の解答
    function solution(n) {
        var answer = -1;
        let x = 0;
        while (x ** 2 < n) {
            x++;
        }
        if (x ** 2 === n) {
            answer = (x + 1) ** 2;
        }
        return answer;
    }
    上のプールnが既存のマイプールより小さい場合、大量の演算を必要としないため、効率が高いほどnが大きくなり、効率が低くなります.

    📘他人解答2



    上の文章を見て再適用した私の文章
    function solution(n) {
        switch(n % Math.sqrt(n)){
        case 0:
          return (Math.sqrt(n) + 1) ** 2;
        default:
          return -1
      }
    }
    nが
  • の場合のみ計算され、速度が最も速い
  • 条件文自体が計算式なので、効率が高いようです

    📝整理する

  • 私は常に、私の解答がこの問題を実現するために要求された論理的な方法を使用するかどうかを考えています.
  • は、どのようにしてより効率的なコードになるかを常に考えています.
  • 私がパラメータとして入力した値だけが、対応する値
  • にコードを効率的に記述することができます.