728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/12927?language=python3
최종 코드
from heapq import heappop, heappush
def solution(n, works):
if sum(works)-n <= 0: return 0
max_heap = []
for w in works:
heappush(max_heap, (-w, w))
while n > 0:
root = heappop(max_heap)[1] - 1
heappush(max_heap, (-root, root))
n-=1
return sum([w[1]**2 for w in max_heap])
풀이 과정
from heapq import heappop, heappush
def solution(n, works):
#전체 작업량보다 남은 시간이 크거나 같은 경우, 모든 작업을 할 수 있다
if sum(works)-n <= 0: return 0
max_heap = []
for w in works:
heappush(max_heap, (-w, w))
while n > 0:
#가장 작업량이 큰 일을 작업한다
root = heappop(max_heap)[1] - 1
#남은 작업량을 다시 힙에 넣어준다
heappush(max_heap, (-root, root))
n-=1
return sum([w[1]**2 for w in max_heap])
#시간복잡도 = O(nlogn), 공간복잡도 = O(n)
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 1 숫자 문자열과 영단어<2021 카카오 인턴십> Python 3 (0) | 2021.08.20 |
---|---|
Level 3 줄서는 방법 Python3 (0) | 2021.08.13 |
Level 3 [1차] 추석 트래픽 <KAKAO 2018 BLIND RECRUITMENT> Python3 (0) | 2021.08.02 |
Level 3 [1차] 셔틀버스 <KAKAO 2018 BLIND RECRUITMENT> Python3 (0) | 2021.07.30 |
Level 3 하노이의 탑 Python3 (0) | 2021.07.29 |