Published 2024. 7. 16. 15:24

유형 : 구현

풀이 시간 : 15분

 

def solution(N, stages):
    fail = [[i+1,0] for i in range(N)]
    rate = [[0,0] for i in range(N+1)]
    for people in stages:
        for i in range(0, people):
            rate[i][1] += 1
        rate[people-1][0] += 1
    del rate[len(rate)-1]
    for i in range(len(rate)):
        if rate[i][1] == 0:
            continue
        else: 
            fail[i][1] = rate[i][0] / rate[i][1]
    fail.sort(key = lambda x : x[1], reverse = True)
    return [fail[i][0] for i in range(len(fail))]

 

로직은

fail = stage number와 실패율을 담는 list

rate = [스테이지에 도달하였으나 해결 못한 사람의 수, 스테이지에 도달한 사람의 수] 를 담는 list

 

먼저 stages 배열을 순회하며 rate list를 채운다.

해당 숫자까지 스테이지에 도달한 사람의 수는 +1씩 해주고,

해당 숫자의 index의 스테이지를 해결 못한 사람의 수를 +1 해준다. 

 

분모가 0인지 체크하고 (이 경우 도달한 사람이 0명, 즉 실패율은 0)

rate를 계산해 준다. 

 

계산한 rate를 기준으로 정렬 후 스테이지 번호를 return한다. 

복사했습니다!