이전에 했던 코딩테스트에 연습한 것이 있어서 그런지 바로 통과 되었다.
각각의 스테이지 클리어 한 사람의 수들을 dict로 묶어서 알아 냈다.
각각의 스테이지 클리어 한 사람의 수와 전체 유저 수의 계산을 한 후 value를 기준으로 정렬하니 완성 되었다.
def solution(N, stages):
answer = []
person = {}
max_person = len(stages)
for i in range(1, N+1):
person[i] = stages.count(i) / max_person if stages.count(i) != 0 else 0
max_person -= stages.count(i)
person_sort = sorted(person.items(), key= lambda item: item[1], reverse=True)
return [i[0] for i in person_sort]
하지만, 특정 구간에서 너무 말도 안되는 속도가 걸려버리면서 다른 방법을 찾기 위해 노력했다,
def solution(N, stages):
answer = []
fail = []
info = [0] * (N + 2)
for stage in stages:
info[stage] += 1
for i in range(N):
be = sum(info[(i + 1):])
yet = info[i + 1]
if be == 0:
fail.append((str(i + 1), 0))
else:
fail.append((str(i + 1), yet / be))
for item in sorted(fail, key=lambda x: x[1], reverse=True):
answer.append(int(item[0]))
return answer