Algorithm (PS)

[카카오2019] 실패율 in Python

minjiwoo 2022. 1. 25. 00:04
728x90
def solution(N, stages):
    answer = []
    length = len(stages)
    for i in range(1, N+1):
        count = stages.count(i)
        if length == 0:
            fail = 0
        else: 
            fail = count/length
            
        answer.append((i, fail)) # 실패율이 0이어도 필요함 
        length -= count
        
    answer.sort(key = lambda x : x[1],reverse = True)
    answer = [i[0] for i in answer]
    return answer

유형 : 정렬

원래 풀이는, 스테이지 도달한 사람을 센 array, 실패율 array, 실패한 사람 array 각각 만들어줬었는데 시간 초과가 났다 ㅠㅠ 

핵심은 현재 i 번쨰 스테이지에 머무르 사람을 매번 스테이지를 확인 할 때마다 전체 인원수에서 빼주는 것이다 !!! 

그러면 매번 for문으로 스테이지에 몇명 도달했는지 확인하지 않아도 된다 !!!

예시에서,

N = 5, [2, 1, 2, 6, 2, 4, 3, 3]  (전체 인원수 : 8)

스테이지 1 에 머무르사람은 1명, 전체 인원수는 현재 8명이다.=> 실패율 1/8

그러면 사실상 나머지 7명은 스테이지 1을 통과한 사람이다 

당연히 ~ 스테이지 2에 도달한 사람은 7명이고, 스테이지 2에 머무르사람은 3명이다. => 실패율 : 3/7

 

https://programmers.co.kr/learn/courses/30/lessons/42889#

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

 

728x90