honey_pot

[python] 야근 지수 본문

문제 풀이

[python] 야근 지수

_tera_ 2022. 9. 22. 23:53

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


지수 특성상 밑 값이 커질수록 제곱값은 1,4,9,16... 처럼 무궁무진하게 커진다 

그래서 낮은 야근시간을 줄이는 것보다 높은 시간을 줄여서 고르게 분포시키는 것이 우선이고

max 함수로 구하다간 리스트 길이 n번을 다 돌면서 시간 초과가 나므로

최소힙인 heapq를 (-값, 값)으로 구성하여 최대힙으로 사용하여 가장 큰 시간에서 계속 1을 빼준다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import heapq
 
def solution(n, works):
    answer = 0
    if sum(works) <= n:
        return 0
    max_heap = []
    for work in works:
        heapq.heappush(max_heap, (-work, work))
 
    for _ in range(n):
        work = heapq.heappop(max_heap)[1- 1
        heapq.heappush(max_heap,(-work,work))
    return sum(list(map(lambda x: x[1]**2,max_heap)))
cs

'문제 풀이' 카테고리의 다른 글

[python] 가장 긴 팰린드롬  (1) 2022.09.23
[python] 등굣길  (0) 2022.09.23
[python] 최고의 집합  (0) 2022.09.22
[Python] 이중우선순위큐  (0) 2022.09.22
[Python] 정수 삼각형  (0) 2022.09.22
Comments