Geisha 2024. 6. 14. 16:53

 

우선순위 queue를 이용하여 문제를 해결하였다 우선순위 queue를 이용하면 알아서 정렬이 되므로 우선순위를 매기고 

for 문을 통해 처음부터 끝까지 돌아가면서 우선순위에 해당하는 인자를 빼내었다.

 

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        PriorityQueue<Integer> q = new PriorityQueue<>(Collections.reverseOrder());
        int answer = 0;

        for (int i : priorities) 
            q.add(i);

        while (!q.isEmpty()) {
            for (int i = 0; i < priorities.length; i++) {
                if (q.peek() == priorities[i]) {
                    q.poll();
                    answer++;
                    if (location == i) {
                        return answer;
                    }
                }
            }
        }

        return answer;
    }
}

 

- 우선순위 queue의 경우에는 선언시 어떤 기준으로 선언할 것인지 옵션을 넣을 수 있다. 위 문제의 경우 
Collections.reverseOrder() 로 내림차순 옵션을 주었다.

우선순위 queue 이외의 경우에 다른 자료구조들 또한 옵션을 넣을 수 있는지 확인해 본바. 다른 자료구조들에서도 옵션을 줄 수 있었다. 하지만 자료구조의 특성에 맞는 옵션들만 가능했었다. 예를들어 자료구조의 크기라던지 자료구조에 대입할 배열 리스트 등을 넣을 수 있었다. 

위 개념은 처음접해보았기에 자료구조에 대해 조금더 깊이 공부할 필요를 느꼈다.