새발블로그
[백준/Java] 11000 강의실 배정 본문
문제
https://www.acmicpc.net/problem/11000
풀이방법
회의실 배정 문제에서 보다 생각해야할 것: 최소의 강의실 사용
한 강의실은 다른 강의실이 사용 중일 때 사용중일 수 있다
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] time = new int[N][2];
for (int i = 0; i<N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
time[i][0] = Integer.parseInt(st.nextToken());
time[i][1] = Integer.parseInt(st.nextToken());
}
//시작 시간이 빠른 순서대로 정렬, 시작 순서가 같으면 종료 시간이 빠른 순으로 정렬
Arrays.sort(time, (o1,o2)-> {
if(o1[0]==o2[0]){
return o1[1]-o2[1];
}
return o1[0]-o2[0];
});
//종료 시간을 기준으로 관리할 pq
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int[] t : time) {
// 가장 빨리 끝나는 강의의 종료 시간이 이미 끝나서 재사용 가능
if (!pq.isEmpty() && pq.peek()<=t[0]){
pq.poll();
}
//현재 강의 종료 시간 추가
pq.add(t[1]);
}
System.out.println(pq.size());
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준/Java] 15649 N과 M(1) (0) | 2025.07.01 |
|---|---|
| [백준/Java] 10974 모든 순열 (0) | 2025.07.01 |
| [백준/Java] 1931 회의실 배정 (0) | 2025.07.01 |
| [백준/Java] 1436 영화감독 숌 (0) | 2025.07.01 |
| [백준/Java] 11652 카드 (0) | 2025.07.01 |