que에 priorities값과 순서를 입력한다.
큐에서 하나를 출력하여 값을 저장하고(set) 그 값과 que안에 있는 값을 비교한다. 이때, set의 값보다 큰 값이 큐에 존재하면 다시 큐에 집어넣고 pass=true로 출력부분을 넘긴다.
만약 큰 값이 존재하지 않아 pass = false이면 set은 다시 프린트가 되는 것이므로 score에 1을 더해준다. 이 때 set의 순서가 location과 같으면 answer를 구했음으로 반복문을 끝내고 그렇지 않으면 다시 2번부터 반복한다.
import java.util.*;
class setting{
int value;
int order;
public setting(int value, int order){
this.value = value;
this.order = order;
}
}
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
boolean pass = false;
int score = 0;
Queue<setting> que = new LinkedList<>();
for(int k = 0 ; k < priorities.length ; k++){
que.add(new setting(priorities[k], k));
}
while(!que.isEmpty()){
pass = false;
setting set = que.poll();
int val = set.value;
int num = set.order;
for(setting n : que){
if(val < n.value){
que.add(set);
pass = true;
break;
}
}
//출력부분
if(pass == false){
score++;
if(location == num){
answer = score;
break;
}
}
}
return answer;
}
}