honey_pot
[python] 야근 지수 본문
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