プログラマ:失敗率

7536 ワード

프로그래머스: 2019 KAKAO BLIND RECRUITMENT>실패율ココアがくっついているので、まだ解けないうちに怖くなった.ううう
しかし現在プログラマーレベル1にはKakaoとChallengeの問題しかないので解く.😭😭
😎でも解けた!!多分.三時間ぐらいかかります.

1.質問


  • クリーンアップ:各ゲームステージの失敗率を計算し、降順に戻ります.



  • ゆっくり問題を読んで、問題を理解しなければなりません!
  • 2.解決プロセス


    🌈 簡単!
  • 失敗率を求める
  • 降順配列.
  • これは非常に簡単ですが、コード作成プロセスはそうではありません.解く過程で、アプローチもずいぶん変わって、シャベルは何度も掘った.
  • 間違った問題を理解した…失敗率を求める過程で多くの時間を浪費した.
  • 降順でどうやって舞台に戻るか悩んでいる:keyvalue要価.
  • 現在keyvalueどうやって接近していくのか悩んでいる中:降順の並びをするために、自分でいろいろなことをして、最後にグーグルを検索(とても簡単)
  • 整理コード:まず実現のために書かれたコードですが、for文が2つあるので、コードが長いのでfor文をマージ!不要な部分を取り除き、それを修正しました(この作業で合格したテストケースは稼働していません...ほほほ...修正を続けます...)
  • 3.コード

    // 2019 KAKAO BLIND RECRUITMENT
    
    function solution(N, stages) {
        var answer = [];
        var fail = [];
        var now = [];
        var result = [];
        var fail_count = 0;
        var now_count = 0;
        
        for(var i=0; i<N; i++){		//실패율 구해서 result 배열에 담는다
            stages.map(num =>{
                if(num==i+1) fail_count += 1;
                if(num>=i+1) now_count += 1;
            })
            fail.push(fail_count);		//스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수
            now.push(now_count);		//스테이지에 도달한 플레이어 수
            fail_count = 0;
            now_count = 0;
            result.push({fail:fail[i]/now[i],stage:i+1})	//실패율 계산해서 result에 담는다
        }//1️⃣console.log(result)
      
        result.sort((a,b)=>b.fail-a.fail).map(n=>answer.push(n.stage))
      //👆result를 내림차순 정렬 한 다음에 차례로 result.stage의 value를 answer에 담는다
        
        return answer;
    }
  • if(num==i+1) fail_count += 1;:ステージに到着してもまだクリアしていないプレイヤー数
  • if(num>=i+1) now_count += 1;:ステージに到着した人数
  • 👉 실패율: 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
  • //1️⃣console.log(result)の結果
  • result.sort((a,b)=>b.fail-a.fail):アレイに近いvalue降順ソートを行うコード
  • 4.後期

  • 解くのは難しいですが、整理してみると新しい方法でもないし、解く過程も複雑なものでもないのになぜ難しいのでしょうかㅠㅠ