[Programmers][JAVA] 프린터

6451 단어 Java스택/큐Java

https://programmers.co.kr/learn/courses/30/lessons/42587

📒 문제

📒 제한사항

👣 코드

import java.util.Collections;
import java.util.PriorityQueue;

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.offer(priorities[i]);
        }
        
        // queue가 비어있지 않는다면 
        while (!pq.isEmpty()) {
            for (int i = 0; i < priorities.length; i++) {
            	// pq는 내림차순 즉, 우선순위가 높은 순으로 정렬되어있음. 
                if (pq.peek() == priorities[i]) {
                    pq.poll();
                    answer++;
                    
                    if (i == location) {
                        pq.clear();
                        break;
                    }
                }
            }
        }
        return answer;
    }
}

💡 정리하기

👉 처음에 priority queue가 아닌 queue를 사용해서 하려니 계속 바뀌는 location을 찾는 부분에 막혀서 풀지 못했는데 priority queue를 사용하여 애초에 내림차순으로 정렬해서 location의 수만큼 거를 수 있었다.

좋은 웹페이지 즐겨찾기