쌓고 쌓다
[프로그래머스] 야근 지수 Java 풀이 및 해설 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12927
풀이 방법
N을 가지고 최대값을 작게 만드는것이 누적 피로도를 작게 할 수 있는 방법이다.
그래서 우선순위 큐를 통해 pop하여 최대값을 갖는 작업을 1시간씩 작업하면 된다.
전체 코드
import java.util.*;
class Solution {
public long solution(int n, int[] works) {
long answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(Collections.reverseOrder());
for(int i=0; i<works.length; i++) {
pq.add(works[i]);
}
while(n>0) {
Integer work = pq.poll();
if(work>0) {
pq.add(work-1);
} else { // 최대값이 0이라면 더이상 큐를 도는것은 의미 없음.
break;
}
n--;
}
while(pq.size() > 0) {
Integer a = pq.poll();
answer += a*a;
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 등굣길 Java 풀이 및 해설 (0) | 2024.05.04 |
---|---|
[프로그래머스] 최고의 집합 Java 풀이 및 해설 (0) | 2024.05.03 |
[프로그래머스] 이중우선순위큐 Java 풀이 및 해설 (0) | 2024.04.27 |
[프로그래머스] 정수 삼각형 Java 풀이 및 해설 (0) | 2024.04.14 |
[프로그래머스] 베스트앨범 Java 풀이 및 해설 (0) | 2024.04.11 |
Comments