-
[알고리즘] Meeting Rooms II알고리즘/배열 2021. 4. 20. 10:34
Problem
Key Point
- Priority Queue
- 일반적인 큐는 먼저 들어간 데이터가 먼저 나오는 구조이다.
- 우선순위 큐는 들어간 순서에 상관없이 일정한 규칙에 따라 우선 순위를 선정하고 우선 순위가 가장 높은 데이터가 먼저 나오게 된다.
- Java는 기본적으로 오름차순이고 내림차순으로 정렬이 필요한 경우 Comparator 클래스나 Comparable 인터페이스를 이용한다.
// 종료 시간을 기준으로 오름차순 Queue<Interval> priorityQueue = new PriorityQueue<>((o1, o2) -> o1.getEnd() - o2.getEnd()));
Code
public class MeetingRoom2 { public int solution(Interval[] intervals) { if(intervals == null || intervals.length == 0) return 0; // Start 시간으로 정렬 Arrays.sort(intervals, (o1, o2) -> o1.getStart() - o2.getStart()); // Priority Queue 생성 Queue<Interval> pq = new PriorityQueue<>(((o1, o2) -> o1.getEnd()-o2.getEnd())); pq.offer(intervals[0]); for (int i = 1; i < intervals.length; i++) { // 회의 종료 시간보다 큰 시작 시간이 있는 경우 하나의 회의실을 사용할 수 있으므로 큐에서 삭제 if (pq.peek().getEnd() <= intervals[i].getStart()) { pq.poll(); } pq.offer(intervals[i]); } return pq.size(); } public static void main(String[] args) { Interval[] intervals = new Interval[]{new Interval(0, 30), new Interval(4, 9), new Interval(10, 16), new Interval(5, 15)}; MeetingRoom2 meetingRoom2 = new MeetingRoom2(); System.out.println(meetingRoom2.solution(intervals)); } }
'알고리즘 > 배열' 카테고리의 다른 글
[알고리즘] Daily temperatures (O) (1) 2021.04.20 [알고리즘] Merge Intervals (O) (0) 2021.04.20 [알고리즘] Jewels And Stones (0) 2021.04.20 [알고리즘] License Key Formatting (0) 2021.04.19 [알고리즘] K Closest Points to Origin (0) 2021.04.19 - Priority Queue