失敗率[2019 KAO BLIND RECRUITMENTレベル1]Python
問題の説明
スーパーゲーム開発者のオレリーは大きな悩みに陥った.彼女が作ったブランド「呉天成」は大きな成功を収めたが、最近は新しいユーザーの数が激減している.なぜなら、新しいユーザーと既存のユーザーの間の舞台の違いが大きすぎるからです.
どうすればいいか悩んだ彼女は、ゲームの時間を動的に増やして難易度を調整することにした.やはりスーパー開発者であり、ほとんどのロジックは実現しやすいが、失敗率を探す部分で危機に陥っている.オレリーの失敗率を求めるコードを完了します.
現在停止しているステージ番号を含む配列フェーズをパラメータとして指定した場合は、失敗率の高いステージからステージ番号を含む配列を降順に返すように、ソルバを完了します.
せいげんじょうけん
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
Reference
この問題について(失敗率[2019 KAO BLIND RECRUITMENTレベル1]Python), 我々は、より多くの情報をここで見つけました https://velog.io/@skrudfhr02/실패율-2019-KAKAO-BLIND-RECRUITMENT-Level-1-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol