[프로그래머스] 실패율(Python)

박현우·2021년 2월 26일
0

프로그래머스

목록 보기
21/34

문제

실패율

문제 해설

실패율 자체를 구하는것은 어렵지 않다. 하지만 리스트에서 어떤 기준을 잡고 정렬을 할지 정해야 하기 때문에 람다식을 활용하여 정렬했다.

  1. 각 스테이지당 실패율을 구한다.

  2. 실패율을 (스테이지, 실패율)의 형식을 갖는 튜플 형식으로 저장한다.

  3. 실패율, 스테이지 순으로 우선순위를 갖도록 람다식을 활용하여 정렬한다. 이때, 각각 내림차순, 오름차순으로 정렬한다.

  4. 위 리스트에서 스테이지만 따로 리턴한다.

풀이 코드

def solution(N, stages):
    fail = [0] * (N + 1)
    cnt = len(stages)
    fail_rate = [()] * (N + 1)
    answer = []

    for stage in stages:  # 해당 스테이지 공략에 실패한 사람 수
        if stage <= N:
            fail[stage] += 1

    for i in range(1, N + 1):  # 실패율 계산 후 리스트에 삽입
        if cnt == 0:
            fail_rate[i] = (i, 0)
        else:
            fail_rate[i] = (i, fail[i] / cnt)
        cnt -= fail[i]
        
    fail_rate = sorted(fail_rate[1:], key=lambda x: (-x[1], x[0]))
    for i in range(N):
        answer.append(fail_rate[i][0])
    return answer

0개의 댓글