[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/12927
[풀이]
우선순위 큐를 오름차순 반환하도록 설정한다.
가장 큰 작업량에 대해서 n번 1씩 감소시키면 야근 지수를 최소화할 수 있다.
[코드]
import java.util.*;
class Solution {
public long solution(int n, int[] works) {
long answer = 0;
//야근 피로도를 최소화한 값을 리턴
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int w:works){
pq.add(w); //내림차순 정렬
}
while(n!=0){
int max = pq.poll();
max--;
if(max!=0){
pq.add(max);
}
if(pq.isEmpty()){
return 0;
}
n--;
}
while(!pq.isEmpty()){
int num = pq.poll();
answer += (long)num*num;
}
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level3 12938 최고의 집합 (Java) (0) | 2023.01.27 |
---|---|
[pro] 프로그래머스 level3 12979 기지국 설치 (Java) - 그리디 (0) | 2023.01.26 |
[pro] 프로그래머스 level3 17676 추석 트래픽 (Java) (0) | 2023.01.26 |
[pro] 프로그래머스 level3 17678 셔틀버스 (Java) - 우선순위 큐 (0) | 2023.01.25 |
[pro] 프로그래머스 level3 42893 매칭 점수 (Java) - 문자열, 정규식 (0) | 2023.01.25 |