프로그래머스 야근지수

wook2·2021년 7월 11일
0

알고리즘

목록 보기
28/117

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

문제에서 주어진 배열에서 가장 큰 원소를 찾고 1씩 감소시키는 것이 문제의 요구사항이었다.
1씩 감소시킬때 마다 가장 큰 원소가 바뀔 수 있기 때문에 계속해서 찾아주어야 하는데 이때, 최대힙을 이용해 빠르게 최댓값을 구할 수 있었다.

import heapq
def solution(n, works):
    heap = []
    if(sum(works) <= n):
        return 0
    for work in works:
        heapq.heappush(heap, (-work, work))
    while n > 0:
        x = heapq.heappop(heap)
        t = (-(x[1]-1),x[1]-1)
        n -= 1
        heapq.heappush(heap,t)
    temp = list(map(lambda x: x[0]*x[0],heap))
    return sum(temp)
profile
꾸준히 공부하자

0개의 댓글