실패율 자체를 구하는것은 어렵지 않다. 하지만 리스트에서 어떤 기준을 잡고 정렬을 할지 정해야 하기 때문에 람다식을 활용하여 정렬했다.
각 스테이지당 실패율을 구한다.
실패율을 (스테이지, 실패율)의 형식을 갖는 튜플 형식으로 저장한다.
실패율, 스테이지 순으로 우선순위를 갖도록 람다식을 활용하여 정렬한다. 이때, 각각 내림차순, 오름차순으로 정렬한다.
위 리스트에서 스테이지만 따로 리턴한다.
def solution(N, stages):
fail = [0] * (N + 1)
cnt = len(stages)
fail_rate = [()] * (N + 1)
answer = []
for stage in stages: # 해당 스테이지 공략에 실패한 사람 수
if stage <= N:
fail[stage] += 1
for i in range(1, N + 1): # 실패율 계산 후 리스트에 삽입
if cnt == 0:
fail_rate[i] = (i, 0)
else:
fail_rate[i] = (i, fail[i] / cnt)
cnt -= fail[i]
fail_rate = sorted(fail_rate[1:], key=lambda x: (-x[1], x[0]))
for i in range(N):
answer.append(fail_rate[i][0])
return answer