programmers_디스크 컨트롤러_java
2023. 3. 13. 14:45ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42627
import java.util.*;
class Solution {
public int solution(int[][] jobs) {
int answer = 0;
// 시작 시간이 작은 순서 정렬
Arrays.sort(jobs, (o1, o2) -> o1[0] - o2[0]);
int jobsSize = jobs.length;
int start = 0; // 현재 진행중인 시작점
int end = 0; // 현재 진행중인 끝점
int jobIdx = 0;
int cnt = 0;
PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> o1[1] - o2[1]);
while(true){
while(jobIdx < jobsSize && jobs[jobIdx][0] <= end){
pq.offer(jobs[jobIdx++]);
}
if(pq.isEmpty()){
end = jobs[jobIdx][0]; // 비어있는 경우 가장 먼저 시작되는 작업
}else{
int[] now = pq.poll();
answer += now[1] + end - now[0]; // 소요 시간 + 시작 시간 - 요청시간
end += now[1]; // 현재 작업 종료 시간
cnt++; // 완료 작업 추가
}
if(cnt == jobsSize) break; // 모든 작업 종료
}
return answer/jobsSize;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_가장 긴 팰린드롬_java (0) | 2023.03.14 |
---|---|
programmers_입국심사_java (0) | 2023.03.13 |
programmers_합승 택시 요금_java (0) | 2023.03.12 |
programmers_[카카오 인턴] 경주로 건설_java (0) | 2023.03.12 |
programmers_도둑질_java (0) | 2023.03.06 |