하루에 한 문제
[프로그래머스] 야근지수 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/12927
import java.util.PriorityQueue;
class Solution {
public long solution(int n, int[] works) {
long answer = 0;
PriorityQueue<Integer> maxPq=new PriorityQueue<Integer>((o1,o2)->(o2-o1));
long sum=0;
for(int i=0; i<works.length; i++) {
maxPq.offer(works[i]);
sum+=works[i];
}
if(sum<=n) return 0;
for(int i=0; i<n; i++) {
int work=maxPq.poll();
maxPq.offer(--work);
}
while(!maxPq.isEmpty()) {
answer+=Math.pow(maxPq.poll(), 2);
}
return answer;
}
}
소요시간 : 10분
야근 지수를 최소화하기 위해서는 가장 큰 작업량을 계속해서 줄여주면 됩니다!
7,1,1 ( 49 + 1 + 1) = 51
5,2,2 ( 25 + 4 + 4) = 34
두개의 숫자의 합은 9로 같지만 야근지수는 제곱을 해서 더하기 때문에 가장 큰 수를 줄여주면 됩니다!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Summer/Winter Coding(~2018)] 숫자게임 -Java (0) | 2020.12.29 |
---|---|
[프로그래머스] 멀리 뛰기 -Java (1) | 2020.12.29 |
[프로그래머스] 등굣길 -Java (0) | 2020.12.28 |
[프로그래머스] 정수 삼각형 -Java (1) | 2020.12.28 |
[프로그래머스] 2 x n 타일링 -Java (0) | 2020.12.28 |
Comments