プログラマー|Lv.2練習問題Part.1_JS


難易度:Level.2
言語:Javascript
出題履歴:練習問題

フルプールコード 👈🏻 クリックしてGithubに移動


❓ Question 1


N個の最小公倍数
  • 配列の数字から最小公倍数
  • を求める.

    📝 My Solution 1


    これは유클리드 호제법を使用する必要がある問題です.
    ユークリッドアーク法は최대공약수を求める公式で、
    最小公倍数はこの最大公倍数で求めた式である.
    この点を理解したほうがいい.
    const gcd = (a,b) => {
        if (a === 0) return b
        return gcd (b%a,a)
    }
    
    const lcm = (a, b) => {
      return (a * b) / gcd(a, b);
    };
    gcdは最大承諾数を求める方法です.lcmは最小公倍数を求める方式である.
    2つの関数を事前に作成します.
    function solution(arr) {
        let answer = 1;
      for (let i = 0; i < arr.length; i++) {
        answer = lcm(answer, arr[i]);
      }
    
      return answer;
    }
    次に、繰り返し文で配列をナビゲートし、
    結果.

    結果



    ❓ Question 2


    124カ国の数字
  • すべての数字が124の国で自然数
  • を変更

    📝 My Solution 2

    function solution(n) {
        var answer = '';
    
        while (n > 0) {
            switch (n % 3) {
                case 1:
                    answer = "1" + answer;
                    n = parseInt(n / 3);
                    break;
                case 2:
                    answer = "2" + answer;
                    n = parseInt(n / 3);
                    break;
                case 0:
                    answer = "4" + answer;
                    n = n / 3 - 1;
                    break;
            }
        }
    
        return answer;
    }
    switchcaseを利用し、
    変更した数値文字列を取得するには、3で割った残りの値を使用します.

    結果



    ❓ Question 3


    最大正方形を検索
  • 最大の正方形の幅を求めます
  • 📝 My Solution 3

    function solution(board) {
        var answer = 0;
        let width = board[0].length;
        let height = board.length;
      
        if (width < 2 || height < 2) return 1
        
           
    まず、横と縦の長さ値を変数として指定します.
    配列の値が1の場合、その部分をつかみます.
     for (let i = 1; i < height; i++) {
         for (let l = 1; l < width; l++) {
             if (board[i][l]>0) {
                let count = Math.min(board[i-1][l],board[i-1][l-1],board[i][l-1])
                board[i][l] = count + 1
             }       
    次に、配列に1が存在するかどうかを繰り返し文で検索します.
    1が表示される場合は、上、左の対角線と左に1があるかどうかを確認します.
    正方形かどうかを確認します.
              if (answer < board[i][l]) {
                 answer = board[i][l]
              }
            }   
          }
        return answer ** 2;
    }
    次に、答えの値と現在の配列の値と比較して、より大きな値を入力します.
    次に、最後の答えの値に正方形のサイズを乗算します.

    結果



    参考になる文章

  • N個の最小の公倍数を求めます
  • 最大の正方形を求めます