210429 - 배상비용최소화 - 수정

golden boy·2021년 4월 29일
0

algorithm

목록 보기
3/3

psudo code

1. 예외를 찾는다

2. 배상해줘야 한다는 조건 하에, 작업량이 가장 많이 남은 것부터 하나씩 빼서 차감한후 다시 넣는다.

3. no가 0이 되면 종료

4. 마지막에 남은 작업량을 제곱해 더한 값이 배상비용이다.


import heapq

def solution(no, works):
    
    if no >= sum(works):
        return 0

    # works = [-work for work in works]
    # heapq.heapify(works)
    
    remain_works = []
    for work in works:
        heapq.heappush(remain_works, -work)
    
    while no:
        work = -(heapq.heappop(remain_works)) - 1
        heapq.heappush(remain_works, -work)
        no -= 1
    
    return sum(work**2 for work in remain_works)
profile
벽을넘자

0개의 댓글