프로그래머스 - 실패율

1 분 소요

프로그래머스(Kakao 2020)- 실패율

프로그래머스

해결방법

이 문제는 정렬을 사용한 구현 유형의 문제라고 볼 수 있다.

각 스테이지의 실패율을 구하기 위해서 각 스테이지에서 몇 명이 실패했는지 찾기 위해 Counter를 사용하였다.

각 스테이지마다 실패율을 구한다음엔 ` result.sort(key=lambda x: -x[1])`를 써서 정렬하면 된다.

from collections import Counter

def solution(N, stages):
    stages.sort()

    counter = Counter(stages).most_common()
    counter.sort()
    print(counter)

    size_stages = len(stages)
    result = []

    for i in range(1,N+1):
        result.append((i,0))

    for c in counter:
        if c[0] > N:
            break
        result.remove((c[0], 0))
        result.append((c[0], c[1]/size_stages))
        size_stages -= c[1]

    result.sort(key=lambda x: -x[1])
    fin = []
    for re in result:
        fin.append(re[0])
    return fin
실행결과
테스트 1 〉	통과 (0.05ms, 10.2MB)
테스트 2 〉	통과 (0.20ms, 10.2MB)
테스트 3 〉	통과 (2.60ms, 10.6MB)
테스트 4 〉	통과 (14.50ms, 11.2MB)
테스트 5 〉	통과 (39.33ms, 15.6MB)
테스트 6 〉	통과 (0.31ms, 10.2MB)
테스트 7 〉	통과 (3.64ms, 10.3MB)
테스트 8 〉	통과 (14.51ms, 11.2MB)
테스트 9 〉	통과 (38.81ms, 15.7MB)
테스트 10 〉	통과 (12.91ms, 11.3MB)
테스트 11 〉	통과 (13.47ms, 11.2MB)
테스트 12 〉	통과 (18.41ms, 11.9MB)
테스트 13 〉	통과 (21.71ms, 12MB)
테스트 14 〉	통과 (0.06ms, 10.2MB)
테스트 15 〉	통과 (5.92ms, 10.6MB)
테스트 16 〉	통과 (3.42ms, 10.4MB)
테스트 17 〉	통과 (5.90ms, 10.6MB)
테스트 18 〉	통과 (3.12ms, 10.4MB)
테스트 19 〉	통과 (1.02ms, 10.2MB)
테스트 20 〉	통과 (4.96ms, 10.5MB)
테스트 21 〉	통과 (8.46ms, 11MB)
테스트 22 〉	통과 (14.88ms, 18.1MB)
테스트 23 〉	통과 (14.92ms, 12.1MB)
테스트 24 〉	통과 (21.64ms, 12.3MB)
테스트 25 〉	통과 (0.04ms, 10.2MB)
테스트 26 〉	통과 (0.05ms, 10.2MB)
테스트 27 〉	통과 (0.04ms, 10.2MB)

댓글남기기