19598번: 최소 회의실 개수 (acmicpc.net)
19598번: 최소 회의실 개수
2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째 회의실에서 첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의
www.acmicpc.net
package Heap;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Baekjoon_19598_최소회의실개수 {
public static class Meeting implements Comparable<Meeting>{
int start, end;
public Meeting(int start, int end) {
this.start = start;
this.end = end;
}
// 끝나는 시간을 기준으로 우선 정렬
@Override
public int compareTo(Meeting m) {
if(this.start == m.start) return this.end - m.end;
return this.start - m.start;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int N = Integer.parseInt(br.readLine());
ArrayList<Meeting> list = new ArrayList<>();
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list.add(new Meeting(a,b));
}
Collections.sort(list);
int room = 0, ans = Integer.MIN_VALUE;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i = 0; i < N; i++) {
room++;
pq.offer(list.get(i).end);
while(list.get(i).start >= pq.peek()) {
room--;
pq.poll();
}
ans = Math.max(room, ans);
}
System.out.println(ans);
}
}'알고리즘 > BAEKJOON' 카테고리의 다른 글
| 10815 숫자 카드_Binary Search (0) | 2021.07.13 |
|---|---|
| 2417 정수 제곱근_Binary Search (0) | 2021.07.12 |
| 19638 센티와 마법의 뿅망치_Heap (0) | 2021.07.09 |
| 11279 최대 힙_Heap (0) | 2021.07.08 |
| 14621 나만 안되는 연애_Prim (0) | 2021.07.06 |