Missing Number
풀이
- prioty와 index를 queue에 저장
- queue를 순회하면서 현재 prioty보다 더 큰 우선수위가 있는지 찾는다 (위 과정은 최대 힙으로 했으면 간단했을 듯)
- 더 큰 우선순위가 있다면 현재 queue에서 꺼낸 값을 queue에 다시 넣는다
- 현재 queue에서 꺼낸 값이 가장 큰 우선순위라면 answer++하고 꺼내려고 하는 location인지 찾는다
코드
class Solution {
public int solution(int[] priorities, int location) {
Queue<int[]> queue = new LinkedList<>();
int answer = 0;
for (int i = 0; i < priorities.length; i++) {
queue.add(new int[]{priorities[i], i});
}
while(!queue.isEmpty()){
int[] cur = queue.poll();
int prior = cur[0];
int index = cur[1];
boolean hasMax = false;
for(int[] q : queue) {
if(q[0] > prior) {
hasMax = true;
break;
}
}
if(hasMax){
queue.add(cur);
} else {
answer++;
if(index == location) return answer;
}
}
return answer;
}
}
정리
- 우선순위 큐로 했으면 더 깔끔하게 했을 거 같다