PS

프로그래머스. 야근 지수

tose33 2022. 2. 8. 17:14

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

 

코딩테스트 연습 - 야근 지수

회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도

programmers.co.kr

 

모든 요소의 제곱의 합이 가장 작도록 하려면 모든 요소들의 차가 최소가 되도록 값을 깎아 나가면된다.

예를들어 요소의 합이 6인 {3,3}은 (3^2) + (3^2) = 18 이지만,

마찬가지로 요소의 합이 6인 {1,5}는 (1^1) + (5^2) = 26이다.

 

그러면 요소 중 가장 큰 값을 계속 1씩 깎아나가면 되는데 

우선순위큐를 이용하면 쉽게 구현할수 있다.

우선순위큐의 top 요소를 1 빼고 다시 우선순위큐에 넣어주면 된다.