문제 링크

풀이 과정

전체 코드

def solution(N, stages):
    # 총 플레이어 수
    user_nums = len(stages)   
    # 스테이지 실패 카운트 배열
    stage_counts = [0 for _ in range(N+1)]         
    # 정답 리스트
    answer = list()
    
    # 스테이지 정렬
    sorted_stages = sorted(stages)
    
    # 카운트 갱신
    for val in sorted_stages:  
        if val == N+1:  continue
        stage_counts[val] += 1
    
    # 실패율 갱신
    for stage in range(1, N+1):
        fail_count = stage_counts[stage]
        if fail_count != 0:
            answer.append((stage, fail_count / user_nums))
            user_nums -= fail_count
        else:
            answer.append((stage, 0.0))
        
    return [
            stage for stage, fail in sorted(
                answer, 
                key=lambda x: (-x[1], x[0]),
            )
    ]