티스토리 뷰

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

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(N, stages):
    arr = [[] for _ in range(N + 1)]
    stages.sort(reverse=True)
    stage = N + 1
    count = stages.count(N + 1)
    index = count
    for i in range(N):
        stage -= 1
        while 0 <= index < len(stages) and stages[index] == stage:
            index += 1
        if index >0:
            arr[stage] = [(index - count) / index, stage]
        else:
            arr[stage] = [0, stage]
        count = index
    arr = sorted(arr[1:], key=lambda x: (-x[0], x[1]))
    answer = [arr[i][1for i in range(N)]
 
    return answer
cs

정렬해서 큰 스테이지부터 숫자를 세어가면서 풀면 된다.

다만 주의할 점은, 예를 들어 N = 4, stages = [2]와 같은 값이 나오면 0으로 나누는 경우가 있을 수 있으니, 예외 처리를 해야 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함