반응형

문제풀이

1. 각 스테이지에 도전 중인 사람의 수를 구합니다.

2. ing[i]를 스테이지 i에 도전 중인 사람의 수라 하면, 스테이지 i에 도달한 사람의 수는 리스트 ing에서 i번째 이상의 요소에 도전 중인 사람의 합, 즉, sum(ing[i:])가 됩니다.

예) 총 6 단계라 하면, 5단계에 도달한 사람의 수는 5단계에 도전중인 사람 수+6단계에 도전중인 사람 수+7단계에 도전중인 사람 수(마지막 단계인 6단계를 클리어한 사람 수)입니다.

3. 스테이지 i의 실패율은 (i단계에 도전중인 사람 수)/(스테이지 i 이상에 도전중인 사람 수)가 됩니다. (ing[i]/sum(ing[i:]))

Python code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#https://programmers.co.kr/learn/courses/30/lessons/42889#
from collections import Counter
def solution(N, stages):
    tot=len(stages)
    c=Counter(stages)
    
    # stage i에 도전중인 사람 수
    ing = [c[i] if i in c else 0 for i in range(N+2)]
    #실패율
    f_rate = {}
    for i in range(N+1) :
        # i 단계의 실패율 : i 단계에 도전중인 사람 수 / i 단계 이상에 도전 중인 사람 수
        f_rate[i] = ing[i]/sum(ing[i:]) if sum(ing[i:])>0 else 0
    return sorted([i for i in range(1,N+1)], key=lambda x : f_rate[x], reverse=True)
cs

문제 링크

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

 

반응형

+ Recent posts