실패율

Seogyu Gim·2020년 12월 8일
0

코딩테스트

목록 보기
44/47

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
profile
의미 있는 일을 하고싶은 개발자

0개의 댓글