코딩응급실
프로그래머스: 프로세스 본문
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
// 우선순위 큐를 내림차순 정렬로 설정한다.
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
int answer = 0;
for (int i = 0; i < priorities.length; i++) {
pq.add(priorities[i]);
}
while (!pq.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
// priorities의 값이 현재 오름차순 우선순위가
// 제일 높은 값과 같은지 확인한다.
if (priorities[i] == pq.peek()) {
if (i == location) {
answer++;
return answer;
}
pq.poll();
answer++;
}
}
}
return -1;
}
public static void main(String[] args) {
int[] priorities = {2, 1, 3, 2}; // A B C D 라 가정.
int location = 2; // C는 몇 번째?
Solution sol = new Solution();
System.out.println(sol.solution(priorities, location)); // 1: 첫번째에 있다.
}
}
예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.
또 다른 예로는 6개의 프로세스 [A, B, C, D, E, F]가 대기 큐에 있고 중요도가 [1, 1, 9, 1, 1, 1] 이므로 [C, D, E, F, A, B] 순으로 실행됩니다. 따라서 A는 5번째로 실행됩니다.
'Java' 카테고리의 다른 글
프로그래머스: 전화번호 목록 (0) | 2024.03.07 |
---|---|
프로그래머스: [1차] 뉴스 클러스터링 (0) | 2024.03.07 |
프로그래머스: 피로도 (0) | 2024.03.07 |
프로그래머스: 기능개발 (0) | 2024.03.07 |
프로그래머스: 튜플 (0) | 2024.03.07 |