전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.
1
500
1
200,000
1
N + 1
N + 1
0
N | stages | result |
---|---|---|
5 | [2, 1, 2, 6, 2, 4, 3, 3] | [3,4,2,1,5] |
4 | [4,4,4,4,4] | [4,1,2,3] |
입출력 예 #1
1번 스테이지에는 총 8명의 사용자가 도전했으며, 이 중 1명의 사용자가 아직 클리어하지 못했다. 따라서 1번 스테이지의 실패율은 다음과 같다.
2번 스테이지에는 총 7명의 사용자가 도전했으며, 이 중 3명의 사용자가 아직 클리어하지 못했다. 따라서 2번 스테이지의 실패율은 다음과 같다.
마찬가지로 나머지 스테이지의 실패율은 다음과 같다.
각 스테이지의 번호를 실패율의 내림차순으로 정렬하면 다음과 같다.
입출력 예 #2
모든 사용자가 마지막 스테이지에 있으므로 4번 스테이지의 실패율은 1이며 나머지 스테이지의 실패율은 0이다.
def solution(N, stages):
answer = []
# 스테이지 별 실패율을 구하기 위한 딕셔너리 생성
lose_stage = {}
for i in range(1, N+1):
come_stage = 0 # 해당 스테이지에 도달한 플레이어 수
lose = 0 # 해당 스테이지를 클리어하지 못한 플레이어 수
for j in stages:
# 스테이지에 도달한 플레이어 수 측정
if j >= i:
come_stage += 1
# 스테이지를 클리어하지 못한 플레이어 수 측정
if i == j:
lose += 1
# 실패율 계산 후 딕셔너리에 저장
if lose == 0:
lose_stage[i] = 0
else:
lose_stage[i] = lose / come_stage
# 실패율 기준으로 딕셔너리 정렬 후 answer 리스트에 추가
lose_stage = sorted(lose_stage.items(), key = lambda x: x[1], reverse = True)
for i in lose_stage:
answer.append(i[0])
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/42889?language=python3