[프로그래머스] 야근 지수

·2023년 11월 30일
0

알고리즘

목록 보기
9/23

문제

[프로그래머스] 야근 지수

실패 코드

def solution(n, works):
    answer = 0
    works.sort(reverse = True)
    
    for i in range(n):
        if sum(works) == 0:
            return 0
        works[0] = works[0] - 1
        works.sort(reverse = True)
    
    for i in works:
        answer += i**2
    
    return answer
  • 정확성은 100점인데 효율성 0점!!!!!!!!
  • sort()는 O(nlogn)인데 매번 sort -> 최악의 경우 O(n*nlong) ㅎㅎ,,

정답 코드

import heapq
def solution(n, works):
    if n >= sum(works):
        return 0
    
    answer = 0
    works = [-w for w in works]
    
    heapq.heapify(works)
    
    for i in range(n):
        a = heapq.heappop(works)
        a += 1
        heapq.heappush(works, a)
        
    for i in works:
        answer += i**2
    
    return answer
  • 남은 작업량 없을 때 0으로 return 하는거 젤 앞으로 빼줌
  • heapq 라이브러리 사용
  • heapq는 기본적으로 min heap의 형태이지만, 모든 원소의 부호를 바꿔주면 max heap과 비슷하게 사용할 수 있다. 연산 부호도 반대로 적용하기!!

참고

우선순위큐

0개의 댓글