[プログラマー]2019 KAKAO BLIND RECRUITMENT-失敗率


✔10.質問する


問題の説明
失敗率

スーパーゲーム開発者のオレリーは大きな悩みに陥った.彼女が作ったブランド「呉天成」は大きな成功を収めたが、最近は新しいユーザーの数が激減している.なぜなら、新しいユーザーと既存のユーザーの間の舞台の違いが大きすぎるからです.
どうすればいいか悩んだ彼女は、ゲームの時間を動的に増やして難易度を調整することにした.やはりスーパー開発者であり、ほとんどのロジックは実現しやすいが、失敗率を探す部分で危機に陥っている.オレリーの失敗率を求めるコードを完了します.
失敗率は次のように定義されます.
  • ステージに到達したがクリアされていないプレイヤー数/ステージのプレイヤー数
  • 現在停止しているステージ番号を含む配列フェーズをパラメータとして指定した場合は、失敗率の高いステージからステージ番号を含む配列を降順に返すように、ソルバを完了します.
    せいげんじょうけん
  • ステージの個数Nは1以上500以下の自然数である.
  • 段階の長さは1以上200000以下である.
  • 段階は、1以上N+1以下の自然数を含む.
    -各自然数は、ユーザが現在チャレンジしているステージの番号を表します.
    -ただし、N+1は、最後のステージ(Nステージ)にクリアしたユーザを表す.
  • 同じ失敗率の舞台があれば、まず小さいサイズの舞台がいいです.
  • プレイヤーが
  • ステージに到達しなかった場合、そのステージの失敗率は0と定義される.
  • 😎 ソースコード

    function solution(N, stages) {
      let answer = [],
        cur = [],
        rest = [],
        rate = [];
      cur = Array(N).fill(0);
      rest[0] = stages.length;
    
      // 스테이지 유저 수 구하기
      for (let i = 0; i < N; i++) {
        for (let j = 0; j < stages.length; j++) {
          if (stages[j] === i + 1) {
            cur[i]++;
          }
        }
        rest[i + 1] = rest[i] - cur[i];
      }
    
      // 실패율 계산
      for (let k = 0; k < N; k++) {
        rate[k] = cur[k] / rest[k];
      }
    
      // rate 객체 생성
      // value를 기준으로 정렬할 때, 인덱스가 변경되면 안 되서
      rate = rate.map((value, stage) => ({
        value: value,
        stage: stage + 1
      }));
    
      // 실패율이 높은 스테이지부터 내림차순 정렬
      rate.sort((a, b) => b.value - a.value);
    
      // answer에 stage를 넣어준다
      for (let m = 0; m < N; m++){
        answer.push(rate[m].stage);
      }
    
      return answer;
    }

    問題が終わったら


    最初は問題を理解するのに時間がかかり、コードを書くときにオブジェクトを並べる使い方に苦労しました.私は変数名を少し混同していますが、わざとですか?
  • 問題アクセスN:ステージ総数stages:各プレイヤーが滞在するステージ
    1.ステージごとに何人のプレイヤー(cur配列)、前ステージをクリアしたプレイヤー(rest配列)の数を計算するために、新しい配列が作成された.
    2.stagesの長さをfor loopとし、ステージステージと同じ数字があればcur[i]++とする.
    3.rest[]の最初の要素は、合計ユーザ数に初期化され、cur[i]が除去される.
    4.前に集計したプレイヤー数から失敗率を算出する.
    5.失敗率とステージ値をオブジェクトに格納して並べ替え、固有のインデックスをそのままにします.
    6.answerのステージ値が更新されました.
  • 難点
    生成されたオブジェクトの値を書くことに慣れていないので、少し迷います.また、この問題のように、完全に解くことができますが、長い時間をかけて何か問題がありますか...問題をどう解決すればいいか、すぐに思いつかなかったからですか.