失敗率[2019 KAO BLIND RECRUITMENTレベル1]Python


問題の説明


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

  • ステージの個数Nは1以上500以下の自然数である.
  • 段階の長さは1以上200000以下である.
  • 段階は、1以上N+1以下の自然数を含む.
  • 各自然数は、ユーザが現在挑戦しているステージの番号を示す.
  • 段、N+1は最後のステージ(Nステージ)にクリアしたユーザを表す.
  • 同じ失敗率の舞台があれば、まず小さいサイズの舞台がいいです.
  • プレイヤーが
  • ステージに到達しなかった場合、そのステージの失敗率は0と定義される.
  • I/O例



    I/O例説明


    I/O例#1
    1番ステージには8人のユーザーが挑戦し、そのうち1人のユーザーはまだ通関していない.そのため、1番ステージの失敗率は以下の通り.
    1 번 스테이지 실패율 : 1/8
    第2ステージには7人のユーザーが挑戦し、そのうち3人のユーザーはまだ通関していない.そのため、2番目の舞台の失敗率は以下の通りです.
    2 번 스테이지 실패율 : 3/7
    同様に、残りの舞台の失敗率は以下の通りである.
    3 번 스테이지 실패율 : 2/4
    4번 스테이지 실패율 : 1/2
    5번 스테이지 실패율 : 0/1
    各ステージの番号を失敗率の降順に並べます.
    [3,4,2,1,5]
    I/O例#2
    すべてのユーザが最後のステージにいるため、4番目のステージの失敗率は1であり、残りのステージの失敗率は0である.
    [4,1,2,3]

    その他のテストケース


    N(int): 3
    stages(int[]): [1, 1, 1]
    Return: [1, 2, 3]

    コード#コード#

    def solution(N, stages): # 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages
        # 실패율: 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
        answer = []
        n = 1
        cnt = 0
        #fail_list = []
        fail_rank = {}
        human_num = len(stages)
        while n < N+1:
            cnt = 0
            for i in stages:
                if i == n: cnt += 1
            #fail_list.append(cnt/human_num) # 주석
            if human_num == 0: fail_rank[n] = 0
            else: fail_rank[n] = cnt/human_num
            human_num -= cnt
            n += 1
        answer = [i[0] for i in sorted(fail_rank.items(), key=lambda x: x[1], reverse=True)]
        
        # 단, N + 1 은 마지막 스테이지(N 번째 스테이지) 까지 클리어 한 사용자
        # 만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다.
        # 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의
        return answer # 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return