실패율 (Level 1)

1. 문제



2. 나의 풀이

import heapq
from fractions import Fraction

def solution(N, stages):
    answer = []
    rlt = []
    for i in range(1, N+1):        
        total_people = 0
        struggled_people = 0
        
        for s in stages:
            if i == s:
                struggled_people += 1
            if i <= s:
                total_people += 1
                
        if struggled_people == 0 or total_people ==0:
            heapq.heappush(answer, (100, i))
        else:
            heapq.heappush(answer, (Fraction(-struggled_people, total_people), i))
    
    heapq.heapify(answer)
    prev = [heapq.heappop(answer)]
    while answer:
        if prev[-1][0] < answer[0][0]:
            rlt += prev
            prev = [heapq.heappop(answer)]
        else:
            prev.append(heapq.heappop(answer))
    if prev:
        rlt += prev
    return [x[1] for x in rlt]

3. 남의 풀이




4. 느낀 점

  • 시간 초과 이슈 때문에 filter와 sum을 사용하던 코드를 수정하여 For문을 딱 한번만 돌도록 전격 수정하였다
  • 그리고 소수 비교의 부정확성 때문에 fractions 모듈을 사용하여 비교하였다

좋은 웹페이지 즐겨찾기