문제 링크
- 스테이지 갯수에 만큼 딕셔너리를 초기화 해줍니다.
- 1부터 순서대로 딕셔너리를 만들어야 실패율을 구할 수 있음
- 아래 for문에서 없으면 딕셔너리 만들기로 하면 정렬한번 해줘야됨
- 도달한 스테이지에 value값을 1씩 증가시킵니다.
- 딕셔너리를 돌면서 0이 아닌 경우만 사람 수로 나누어 실패율을 구한다.
- 실패율을 내림차순으로 정렬한다.
- 시간복잡도 = N (500 + 200000 + 500 + 500log500)
def solution(N, stages):
fail = dict()
for n in range(1,N+1):
fail[n] = 0
S = len(stages)
for s in stages:
if s <= N:
fail[s] += 1
for key, value in fail.items():
if value:
new_value = value/S
S -= value
fail[key] = new_value
answer = sorted(fail, key=lambda x:fail[x], reverse=True)
return answer