
링크
코딩테스트연습 > 스택/큐 > 프린터
풀이 순서
- 큐를 사용한다.
- 현재 실행하려는 작업보다 더 큰 우선순위의 작업이 있는 경우 대기열의 제일 뒤로 보낸다.
코드 (우선순위 큐)
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;
}
}```