[프로그래머스 | 파이썬] 실패율

devheyrin·2022년 6월 8일
0

codingtest

목록 보기
53/65

문제 링크

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

코드

def solution(N, stages):
    temp = []
    for i in range(1, N+1):
        stage_reach = len([x for x in stages if x >= i])
        stage_nonclear = stages.count(i)

        fail_rate = 0
        if 0 not in (stage_reach, stage_nonclear):
            fail_rate =  stage_nonclear / stage_reach 
        
        temp.append((i, fail_rate))
    temp.sort(key=lambda x: x[1], reverse=True)        
    answer = [i[0] for i in temp]    
    return answer

풀이 설명

로직을 생각하는 것 자체는 어렵지 않았다.
1부터 N에 대해서 반복문을 돌면서, 배열 안에서 현재 수보다 크거나 같은 수의 개수를 센다.
그리고 현재 수와 같은 수의 개수를 센다.
둘을 나눠주면 실패율을 구할 수 있는데, 이때 분모의 값으로 0이 나오는 경우를 처리해 주어야 한다.
실패율과 숫자(스테이지 번호)를 튜플로 묶어 임시 배열에 추가한 후, 리턴할 때는 실패율을 기준으로 정렬해 스테이지 번호만 리턴한다.

profile
개발자 헤이린

0개의 댓글