Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

코딩응급실

프로그래머스: 프로세스 본문

Java

프로그래머스: 프로세스

Daeryuk Kim 2024. 3. 7. 16:08
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