Python|アルゴリズムプログラマー失敗率



アルゴリズムの概要

  • ステージごとの失敗率が最も高く、結果値を並べて出力する.
  • N:ステージ総数
  • stages:ゲームユーザが現在停止しているステージ番号を含むシーケンス
  • N+1は、最後のステージ(Nステージ)にクリアしたユーザを表す.
  • 失敗率が同じ場合、ステージの低い値はもう少し前になるはず.
  • 失敗率=ステージに到達しても空になっていないプレイヤー数/ステージに到達したプレイヤー数

  • N: 5
  • stages: [2, 1, 2, 6, 2, 4, 3, 3]
  • 結果値:[3,4,2,1,5]
  • 舞台1失敗率:1/8


    舞台2失敗率:2/7


    舞台3失敗率:3/5


    ステージ4失敗率:1/2


    舞台5失敗率:0/1


    に答える

    def solution(N, stages):
        length = len(stages)
        result = {}
        for n in range(1, N + 1):
            if n in stages:
                ct = stages.count(n)
                result[n] = ct / length
                length -= ct
            else:
                result[n] = 0
        return [r[0] for r in sorted(result.items(), key = lambda item: item[1], reverse=True)]
  • for文stage 1から最終段階Nまでの失敗率を計算し、스테이지: 실패율形式で値を含む.その後、set形式の値を含むlistに変換されるので、set形式の値をlistに追加できます.
  • length失敗率を計算するたびにステージに到達するプレイヤー数が減少し、失敗率を計算すると次のステージの失敗率を計算するために前のステージに到達するプレイヤー数が減少する.
  • ステージ配列にステージ対応番号がなければ、そのステージの失敗率は0となる.
  • keyパラメータの比較値を失敗率に設定します.
  • キー値をreverse=Trueに設定
  • 失敗率が同じ場合、キー値以外のitem[0]は昇順で自動的にソートされます.
  • list理解によりitem[1]の値のみを並べ替えた配列を返す.