코드
def solution(N, stages):
failure_rate = {}
total_players = len(stages)
for stage in range(1, N + 1):
players_at_stage = stages.count(stage)
if total_players > 0:
failure_rate[stage] = players_at_stage / total_players
total_players -= players_at_stage
else:
failure_rate[stage] = 0
# 실패율을 기준으로 내림차순 정렬하되, 실패율이 같을 경우 스테이지 번호가 작은 순으로 정렬
return sorted(failure_rate, key=lambda x: failure_rate[x], reverse=True)
핵심
failure_rate
딕셔너리를 초기화하여 각 스테이지의 실패율을 저장.total_players
는 stages에 있는 총 플레이어 수.- 1부터 N까지의 각 스테이지에 대해 반복문을 수행.
players_at_stage
는 현재 스테이지에 머물러 있는 플레이어 수.total_players
가 0보다 큰 경우, 실패율을 계산하고, 해당 스테이지에서 머물러 있는 플레이어 수만큼total_players
에서 빼기.total_players
가 0이면, 해당 스테이지에 도달한 플레이어가 없으므로 실패율을 0으로 설정.- 마지막으로, 실패율을 기준으로 스테이지 번호들을 내림차순으로 정렬하여 반환.