12월에 풀었을 때
def solution(N, stages):
nums, players_n = [], len(stages)
for stage in range(1, N+1):
fail_rate = stages.count(stage) / players_n if players_n > 0 else 0 # stage마다 남은사람 / stage 도전자 수 : 실패율
players_n -= stages.count(stage) # 상위 stage 도전한 player 수
nums.append([stage, fail_rate])
nums.sort(key = lambda x : (x[1]), reverse=True)
return [i[0] for i in nums]
오랜만에 다시 풀었을 때(오히려 더 길어졌네..)
def solution(N, stages):
answer = []
failure_rate = dict() # 스테이지에 도달했으나 클리어하지 못한 플레이어 수 / 스테이지에 도달한 플레어이 수
for stage in range(1, N+1):
same = [i for i in stages if i == stage]
excess = [i for i in stages if i > stage]
if len(same) + len(excess) == 0:
failure_rate[stage] = 0
else:
failure_rate[stage] = len(same) / (len(excess) + len(same))
sorted_rate = dict(sorted(failure_rate.items(), key=lambda x:x[1], reverse=True))
result = list(sorted_rate.keys())
return result