알고리즘 (JAVA)/프로그래머스 알고리즘
[코테준비 - python] 실패율 lever1 - 개발자 배찌
개발자 배찌
2022. 12. 2. 17:19
728x90
def solution(N, stages):
userLen = len(stages)
failRateArr = {}
for i in range(1,N+1) :
if userLen == 0 :
failRateArr[i] =0
else :
failRateArr[i] = stages.count(i) / userLen
userLen -= stages.count(i)
failRateArr= sorted(failRateArr, key=lambda x : failRateArr[x], reverse=True)
#answer = sorted(failRateArr, key=failRateArr.get, reverse=True)
return failRateArr
🐵문제풀이과정🐵
1. 전체 스테이지 개수 = N
2. 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 = stages
3. 실패율 = 스테이지에 도달했고, 아직 클리어 하지 못한 플레이어 수 / 스테이지에 도달한 플레이어 수
4. 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열 Return
✔️1번 (i번) 스테이지 실패율 :
8명 중 1번에 머물러 있는 사람 수 = 1명 (stages.count(i)명)
실패율 = 1/8
stages.count(i) / 플레이어수
✔️2번 스테이지 실패율:
1번에서 나온 사람수 제외한 플레이어 수 중에
2번에 머물러 있는 사람 수 = 3명 (stags.count(i)명)
실패율 = stages.count(i) / 남은플레이어수
✔️3번 스테이지 실패율 : ....
....
처음에 풀었을 때는, 런타임 오류가 떴다.🥲
그 이유는 실패율을 구할 때, 분모가 0인 경우를 고려를 안했기 때문!
(나도 인터넷에 찾아보았다ㅠ )
If 문으로 플레이어수가 0이면 0값으로 넣어주는 로직 추가!