レイアウト[Js]を参照し、プログラマの問題を解く(失敗率)


プログラマーの問題を解決している間に、アレイで何かを見つけたいとき!使い方をまとめて、コメントを書きます!

1.indexOf、lastIndexOf、include


ex) arr.indexOf, arr.lastIndexOf, includes
これは、ターゲットが文字列ではなく配列内の要素であるためです.
  • arr.indexOf(item,from):インデックスからitem要素を検索します.エレメントが見つかった場合は、そのエレメントのインデックスが返されます.見つからない場合は-1が返されます.
  • arr.laseIndexOf(item,from):上記の方法と同じ機能を持っていますが、検索が最後から始まる点が違います!
  • arr.includes(item,from):インデックスからアイテムが存在するかどうかを検索し、エレメントが見つかったらtrueを返します.
  • 2.findとfindIndex


    配列がオブジェクトで構成されていると仮定すると、配列内で特定の条件に合致するオブジェクトを検索する場合にarr.find(fn)を使用できます.
    let users = [
      {id: 1, name: "John"},
      {id: 2, name: "Pete"},
      {id: 3, name: "Mary"}
    ];
    
    let user = users.find(item => item.id == 1);
    
    alert(user.name); // John

    3. filter


    findメソッドは、関数の戻り値をtrueに設定する一意の要素を検索します.複数の要素が条件を満たしている場合はarr.filter(fn)を使用します.

    プログラマの失敗率の問題の解決


    2019年のKakaoBlandRescruting問題ですが、Lv 1問題にはそれなりの方法が使われているので、簡単に解決できました.詳しくはプログラマーサイトで確認してください!
  • このフェーズには失敗したユーザが含まれていないため、personとして定義されます.
  • for文で反復文
  • を返す
  • フィルタを用いる条件を満たす要素の長さ
  • を取得する.
  • answer.
  • pushにより対応するフェーズ番号と失敗率を配列形式で入力
  • answer.sortによる降順ソート
  • ですが、必要な戻り値は0番目のインデックスのフェーズ番号なので、答えます.mapでは0番目のインデックス値のみが返されます!
  • function solution(N, stages) {
        var answer = [];
        let person = stages.length;
            for(let j=1;j<=N;j++){
                let count = stages.filter(N=>N===j).length;
                answer.push([j,count/person]);
                person = person-count;
            }
        answer = answer.sort((a,b)=> b[1]-a[1]);
        return answer.map(a=>a[0]);
    }