99클럽 코테 스터디 27일차 - 큐

김동하·2024년 8월 18일
0

알고리즘

목록 보기
77/90

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;
    }
}

정리

  • 우선순위 큐로 했으면 더 깔끔하게 했을 거 같다
profile
프론트엔드 개발

0개의 댓글