Algorithm & Data Structures/Programers
Lv 3. 야근 지수
Geisha
2024. 9. 22. 01:12

https://school.programmers.co.kr/learn/courses/30/lessons/12927?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
//heap 구조 사용하면 될거같다.
//priorityqueue
//다집어넣고 최대힙 수정
//n 떨어질때까지 같은숫자로 만들어주기
//n 떨어지면 얼마가 남았는지 말하기
// 1000000000000
// long 범위로 놀자
import java.util.*;
class Solution {
public long solution(int n, int[] works) {
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
long answer = 0;
// 모든 작업량을 우선순위 큐에 추가
for (int work : works) {
pq.add(work);
}
// n 시간 동안 작업량을 1씩 감소
while (n > 0 && !pq.isEmpty()) {
int current = pq.poll(); // 최대 작업량 추출
current -= 1; // 작업량 1 감소
if (current > 0) { // 0보다 크면 다시 추가
pq.add(current);
}
n--; // 남은 작업 시간 감소
}
// 남은 작업량의 제곱의 합 계산
while (!pq.isEmpty()) {
int num = pq.poll();
answer += (long) num * num;
}
return answer;
}
}