상상쓰

[프로그래머스] 실패율 본문

Coding Test

[프로그래머스] 실패율

상상쓰 2021. 8. 22. 00:16

https://programmers.co.kr/learn/courses/30/lessons/42889?language=python3 

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

 

Counter 도 써보고 싶었고 zip 도 한 번 써보고 싶었다.

Counter 를 이용하여 진행 중인 스테이지 번호의 개수를 알아낸다. print(count) = Counter({2: 3, 3: 2, 1: 1, 6: 1, 4: 1})

1번 스테이지부터 실패율을 계산한다. (T = 해당 스테이지를 클리어한 사람의 수)

 

zip 을 이용해 (스테이지 번호, 스테이지 실패율) 튜플을 원소로 하는 배열을 만들고 실패율에 대하여 내림차순, 실패율이 같으면 번호에 대하여 오름차순한다.

 

from collections import Counter

def solution(N, stages):
    answer = []
    result = []
    count = Counter(stages)
    T = len(stages)
    
    for i in range(1, N+1):
        result.append((count[i] / T) if T > 0 else 0)
        T -= count[i]
    
    for n, p in sorted(list(zip([i for i in range(1, N+1)], result)), key = lambda x : (-x[1], x[0])):
        answer.append(n)

    return answer
                
print(solution(5, [2, 1, 2, 6, 2, 4, 3, 3])) # [3, 4, 2, 1, 5]
Comments