https://programmers.co.kr/learn/courses/30/lessons/42889
스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
for
루프에서는 stage에 도달하였지만 stage를 클리어하지 못한 플레이어의 수를 구하고 이 값들은 실패율의 분자
로 사용 된다.분모
로 사용 된다.스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.
라는 부분에서 추가적으로 if 문으로 처리해 주었다.def solution(N, stages):
answer = []
not_clears = [0] * (N + 2)
clears = [0] * (N + 2)
# 501 번째는 모두 클리어한 유저 수
for stage in stages:
not_clears[stage] = not_clears[stage] + 1
# stage별 도달 했지만 해당 stage를 클리어 하지 못한 플레이어의 수를 구함(분자)
user_num = len(stages)
# stages 배열의 원소의 갯수는 유저 수를 의미
temp = 0
for i in range(1, N + 2):
temp = temp + not_clears[i - 1]
clears[i] = user_num - temp
# stage를 클리어한 유저의 수(분모)
results = {}
for i in range(1, N + 1):
if not_clears[i] == 0:
if 0 not in results:
results[0] = [i]
else:
results[0].append(i)
else:
if (not_clears[i] / clears[i]) not in results:
results[(not_clears[i] / clears[i])] = [i]
else:
results[(not_clears[i] / clears[i])].append(i)
results_key = list(results.keys())
results_key.sort(reverse = True)
for key in results_key:
answer = answer + results[key]
return answer