[프로그래머스]stack/queue-프린터
Collections.reverseOrder()를 까먹어서 조금 애를 먹었지만 출력 찍어보며 해결.
맨 앞 요소가 가장 우선순위가 높은지 확인하고, 그 요소가 내가 확인하고자 하는 프린트인지 확인한다. 조건에 따라 location과 answer의 값을 달리하며 내가 출력하고자하는 프린트의 순서를 정한다.
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 1;
ArrayList<Integer> print = new ArrayList<>();
PriorityQueue<Integer> prior = new PriorityQueue<>(Collections.reverseOrder());
for(int i=0; i<priorities.length; i++){
print.add(priorities[i]);
prior.add(priorities[i]);
}
while(!print.isEmpty()){
if(print.get(0) < prior.peek()){
if(location==0){
location = print.size()-1;
} else{
location--;
}
int p = print.remove(0);
print.add(p);
} else{
if(location==0){
return answer;
} else{
print.remove(0);
prior.poll();
answer++;
location--;
}
}
}
return answer;
}
}
Author And Source
이 문제에 관하여([프로그래머스]stack/queue-프린터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@snusun/프로그래머스stackqueue-프린터저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)