문제 그대로 코드를 작성하면 된다. 이때 시간복잡도가 널널해서 이용하지 않았지만 누적합을 한번에 적용시키는 로직을 이용할 수도 있을 것 같다.
def solution(N, stages):
arrive = [0] * (N+2) # 도달한 stage
not_clear = [0] * (N+2) # 현재 못깨고 있는 stage
for player_stage in stages:
for i in range(1, player_stage+1): # 누적합 한번에 계산하는로직 적용해도 될지도
arrive[i] += 1 # 도달한 stage 갱신
not_clear[player_stage] += 1 # 현재 못깨고 있는 stage 갱신
failure = []
for i in range(1,N+1):
one_failure = 0 if arrive[i] == 0 else not_clear[i]/arrive[i]
failure.append((i,one_failure))
failure.sort(key = lambda x: (-x[1],x[0]))
return [idx for idx, _ in failure]