💻 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42889
📖 문제 해결
문제에서 정의한 대로 실패율을 계산하고, 파이썬 리스트의 내장 함수인 sort()
함수의 key
parameter를 이용하여 실패율을 내림차순으로 정렬하였습니다. 그 후 실패율이 높은 스테이지 순서대로 answer
리스트에 append()
하여 문제를 해결하였습니다.
# key parameter 활용을 위해 구현한 함수
def failures_key(failures_):
return failures_[1]
def solution(N, stages):
# 각 스테이지마다 사람들이 얼마나 있는지 계산하기 위한 리스트
now = [0]*(N+2)
for stage in stages:
now[stage] += 1
# 각 스테이지마다 실패율을 계산하기 위한 리스트
failures = [0]*(N+2)
for idx, stage in enumerate(now):
# sum(now[idx:]) != 0 이면 공식에 맞춰 실패율 계산
if sum(now[idx:]) != 0:
failures[idx] = (idx, now[idx] / sum(now[idx:]))
# sum(now[idx:]) == 0 이면 실패율은 0
else:
failures[idx] = (idx, 0)
failures = failures[1:N+1]
# 실패율을 기준으로 내림차순으로 정렬
failures.sort(reverse = True, key = failures_key)
answer = []
# 실패율이 가장 높은 스테이지부터 answer 리스트에 추가
for index in failures:
answer.append(index[0])
return answer