[프로그래머스] 프로세스(Java, 자바)

giggle·2023년 8월 15일
0

문제

프로세스


📌 아이디어

해당 문제는 우선순위 큐를 활용해 문제를 해결했습니다.

1. 주어진 배열을 우선순위 큐에 내림차순으로 정렬합니다.
2. 우선순위에서 가장 큰 peek 값과 현재 인덱스의 값을 비교하여 일치하는 경우는 프로세스를 꺼낼 수 있기 때문에 카운트합니다.
3. 이때, 현재 인덱스 번호와 location이 일치한다면 정답처리를 진행합니다.
4. 일치하지 않는다면, peek값을 poll하여 프로세스를 꺼내줍니다.


📌 코드

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        PriorityQueue<Integer> pque = new PriorityQueue<Integer>(Collections.reverseOrder());
        
        for (int i = 0; i<priorities.length; i++) {
            pque.add(priorities[i]);
        }
        while (!pque.isEmpty()) {
            for (int i = 0; i<priorities.length; i++) {
                if (priorities[i] == pque.peek()) {
                    answer++;
                    if (i == location) {
                        return answer;
                    }
                    pque.poll();
                }
            }   
        }
        
        return 0;
    }
}

✏️ TIP

1 . 우선순위 큐를 사용하기 위해 PriorityQueue를 활용합니다.
2 . Collections.reverseOrder()를 활용해 내림차순 정렬을 진행합니다.
3. 우선순위 큐에 값을 추가할때는 add, 값을 빼낼 때는 poll을 사용합니다.
4. 우선순위 큐에 맨 앞에 값을 확인할때는 peek()를 활용합니다.


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.

0개의 댓글