[프로그래머스/Java] 프린터

괜찮아요?·2023년 4월 3일
0

programmers

목록 보기
10/23

링크

코딩테스트연습 > 스택/큐 > 프린터

풀이 순서

  1. 큐를 사용한다.
  2. 현재 실행하려는 작업보다 더 큰 우선순위의 작업이 있는 경우 대기열의 제일 뒤로 보낸다.

코드 (우선순위 큐)

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        //내림차순 정렬. Collections 클래스의 reverseOrder()메소드 사용
        PriorityQueue<Integer> printer = new PriorityQueue<>(Collections.reverseOrder());
        int answer = 0;
        
        for(int i=0; i<priorities.length; i++){
            printer.add(priorities[i]);
        }
        
        while(!printer.isEmpty()){
            for(int i=0; i<priorities.length; i++){
                //peek() - queue에서 최대 우선순위 요소 반환
                if(priorities[i] == printer.peek()){
                    if( i == location){
                        answer++;
                        return answer;
                    }
                    //poll() - 큐 맨앞에 있는 값을 반환 후 삭제, 비어있는 경우 null반환
                    //remove() - 큐 맨앞에 있는 값을 반환 후 삭제, 비어있는 경우 NoSuchElementException에러발생
                    printer.poll();
                    answer++;
                }
            }
        }
        
        return -1;
    }
}```
profile
할 수 있어요

0개의 댓글