입출력 예 입출력 예 #1 1번 스테이지에는 총 8명의 사용자가 도전했으며, 이 중 1명의 사용자가 아직 클리어하지 못했다. 따라서 1번 스테이지의 실패율은 다음과 같다. - 1 번 스테이지 실패율 : 1/8 2번 스테이지에는 총 7명의 사용자가 도전했으며, 이 중 3명의 사용자가 아직 클리어하지 못했다. 따라서 2번 스테이지의 실패율은 다음과 같다. - 2 번 스테이지 실패율 : 3/7 마찬가지로 나머지 스테이지의 실패율은 다음과 같다. - 3 번 스테이지 실패율 : 2/4 - 4번 스테이지 실패율 : 1/25번 스테이지 실패율 : 0/1
각 스테이지의 번호를 실패율의 내림차순으로 정렬하면 다음과 같다. [3,4,2,1,5]
만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다. 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.
1. 풀이
def solution(N, stages):
answer = []
player = len(stages)
false = {} #실패율
for i in range(1,N+1):
if player == 0: #스테이지 도달한 플레이어가 0명일 때
false[i] = 0
else:
false[i] = stages.count(i)/player
player -= stages.count(i)
answer = sorted(false, key=lambda x : false[x], reverse=True)
return answer
같은 값을 가진 항목은 입력 순서에 따라 정렬되어 출력됩니다.
2. 문제와 관련한 기초 개념 (내가 헷갈린 것)
1) lambda()
sorted() 함수와 함께 사용하기
일반적인 형태:
sorted(iterable, key=key, reverse=reverse)
numbers = [4, 2, 7, 1, 9]
sorted_numbers = sorted(numbers, key=lambda x: x**2) #각 숫자를 제곱한 값에 따라 정렬하도록 지정
print(sorted_numbers)