알고리즘 (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값으로 넣어주는 로직 추가!