티스토리 뷰
1. priorities 배열을 우선순위 큐에 넣는다.
2. priorities 배열의 값과 배열의 인덱스 (location)를 pair로 하여 큐에 넣는다.
3. 큐가 empty가 아닐 때까지 while문을 돌면서, 우선순위 큐와 큐에서 각각 poll을 해준다.
-> 우선순위 큐에서 poll된 값 ! = 현재 poll된 큐 의 우선순위 라면, poll했던 큐를 다시 넣고 큐에서 계속 poll -> add를 반복한다. ( 해당 우선순위의 요소가 나올 때 까지)
4. queue 에서 최종적으로 poll된 값의 location과 우리가 찾을 요소의 location이 같다면 종료해준다.
import java.util.*;
class pair{
int loc;
int prior;
public pair(int loc, int prior) {
this.loc=loc;
this.prior=prior;
}
}
class Solution {
public int solution(int[] priorities, int location) {
int answer =0;
Queue<pair>queue = new LinkedList<>();
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int i = 0; i< priorities.length; i++) {
queue.add(new pair(i,priorities[i]));
pq.add(priorities[i]);
}
while(!queue.isEmpty())
{
answer++;
pair que_poll=queue.poll();
int pq_poll=pq.poll();
while(true) {
if(que_poll.prior==pq_poll) break;
queue.add(que_poll);
que_poll=queue.poll();
}
if(que_poll.loc == location) break;
}
return answer;
}
}
'algorithm > problem solving' 카테고리의 다른 글
BOJ 1976 여행 가자 (0) | 2020.05.26 |
---|---|
BOJ 2110 공유기 설치 (0) | 2020.05.14 |
BOJ 11559 Puyo Puyo (0) | 2020.05.07 |
BOJ 2206 벽 부수고 이동하기 (0) | 2020.05.05 |
BOJ 15686 치킨배달 (0) | 2020.05.03 |
댓글