μ΅œλŒ€ 1 λΆ„ μ†Œμš”

πŸ“ [Lv2_42587] ν”„λ¦°ν„°

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;

        // μš°μ„ μˆœμœ„ 큐 μ„ μ–Έ ( λ‚΄λ¦Όμ°¨μˆœ )
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

        // μš°μ„ μˆœμœ„ 큐에 λ°°μ—΄κ°’ λ„£κΈ°
        for(int i=0; i<priorities.length; i++){
            pq.add(priorities[i]);
        }

        while(!pq.isEmpty()){
            for(int i=0; i<priorities.length;i++){
                // λ§Œμ•½ λ² μ—΄ 값이 λ‚΄λ¦Όμ°¨μˆœ 정렬해놓은 κ°’κ³Ό 같은 경우 ( 제일 μ²˜μŒμ€ κ°€μž₯ 큰 경우 )
                if(priorities[i] == pq.peek()){
                    // κ·Έ indexκ°€ locationμ΄λž‘ 같을 경우
                    if(i == location){
                        answer++;
                        return answer;
                    }
                    // ν¬μ§€λ§Œ μ›ν•˜λŠ” 값이 μ•„λ‹ˆλ‹€ 
                    pq.poll();
                    answer++;
                }
            }
        }

        return -1;

    }
}

πŸ€” λ‚˜μ˜ 생각

μš”μ¦˜ λ¬Έμ œμ— μš°μ„ μˆœμœ„ 큐가 많이 λ‚˜μ˜€λŠ” 것 κ°™λ‹€.
이 λ¬Έμ œλŠ” λ‚΄λ¦Όμ°¨μˆœ 정렬이라 Collections.reverseOrder() 을 μ‚¬μš©ν•˜λŠ” 것이 ν‚€ 포인트고 Queue의 μ„±μ§ˆμ„ μ΄μš©ν•˜λŠ” 것이 ν¬μΈνŠΈμ΄λ‹€.
μ‰¬μš΄λ“― μ‰½κ²Œ 풀리지 μ•Šμ•˜λ”°..γ…Ž