1. 아이디어
▪ 일의 작업량 리스트를 최대 heap에 넣기
▪ n이 0일 때까지 while문 반복
- 최대 heap에서 일의 작업량 중 가장 큰 값 꺼내기
- 꺼낸 작업량에 -1하고 다시 최대 heap에 넣기
- n -= 1
▪ 남은 작업량의 제곱합 구해서 야근 지수 구하기
2. 시간복잡도
▪ O(nlogm), m = works의 길이
3. 변수
▪ 최대힙: heap
Code
import heapq
def solution(n, works):
answer = 0
q = []
for x in works:
heapq.heappush(q,x*-1)
while n > 0:
work = heapq.heappop(q)*-1
heapq.heappush(q,(work-1)*-1)
n -= 1
while q:
work = heapq.heappop(q)*-1
if work > 0:
answer += work**2
return answer
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 - 최고의 집합 (0) | 2024.03.28 |
---|---|
[코딩테스트] 프로그래머스 - 단어 변환 (0) | 2024.03.27 |
[코딩테스트] 프로그래머스 - 네트워크 (0) | 2024.03.26 |
[코딩테스트] 프로그래머스 - 이중우선순위큐 (0) | 2024.03.26 |
[코딩테스트] 프로그래머스 - 정수 삼각형 (0) | 2024.03.26 |