문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12927
코딩테스트 연습 - 야근 지수
회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도
programmers.co.kr
풀이
- 최대힙 문제 - 파이썬은 최소힙만 지원해주므로 부호 변경하여 최대힙 구현
- 작업량이 가장 큰 일부터 n이 0이 될 때까지 처리
- 처리할 일이 없으면 while 문 빠져나감
import heapq
def solution(n, works):
answer = 0
heap = []
# 파이썬은 최소힙만 지원해주므로 부호를 변경하여 최대힙 구현
for num in works:
heapq.heappush(heap,-num)
# n이 0일 때까지
while n > 0:
work = heapq.heappop(heap)
# 작업량이 가장 많이 남은 일이 0이면 남은 작업 모두 0이라는 뜻이므로 break
if work == 0 :
break
# 1만큼 작업 처리
work += 1
# n 줄이기
n -= 1
heapq.heappush(heap,work)
for i in heap:
answer += i*i
return answer
'개발 > algorithm' 카테고리의 다른 글
[백준 1463번] 1로 만들기 -python (0) | 2022.01.20 |
---|---|
[프로그래머스][level3] 거스름돈 -python (0) | 2022.01.18 |
[프로그래머스][level3] 줄 서는 방법 -python (0) | 2022.01.13 |
[프로그래머스][level3] 최고의 집합 -python (0) | 2022.01.13 |
[프로그래머스][level3] 멀리 뛰기 -python (0) | 2022.01.13 |