728x90
반응형
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
처음에는 어떻게 풀지 엄청 헷갈렸다.
하지만 잘 생각해보면 매우 간단하다.
무조건 현재 시작할 수 있는 회의들 중 제일 빨리 끝나는 회의를 선택하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
int N, result = 1;
String input;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
int[][] a = new int[N][2];
for (int i = 0; i < N; i++) {
input = br.readLine();
StringTokenizer st = new StringTokenizer(input);
a[i][0] = Integer.parseInt(st.nextToken());
a[i][1] = Integer.parseInt(st.nextToken());
}
// 끝나는 시간 기준으로 정렬
Arrays.sort(a, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[1] == o2[1]) // 끝나는 시간이 같으면 시작 시간이 빠른 경우
return o1[0] - o2[0];
return o1[1] - o2[1];
}
});
int finishTime = a[0][1]; // 첫 회의의 끝나는 시간
for (int i = 1; i < N; i++) { // 두번째 회의부터 확인
if (a[i][0] >= finishTime) { // 시작 가능 하면
result++;
finishTime = a[i][1];
}
}
System.out.println(result);
}
}
728x90
반응형
'코테 > JAVA' 카테고리의 다른 글
[백준 2212 /JAVA] 센서 (0) | 2024.01.20 |
---|---|
[백준 1700 / JAVA] 머리탭 스케줄링 (0) | 2024.01.20 |
[백준 11047 / JAVA] 동전 0 (0) | 2024.01.18 |
[백준 1449 / JAVA] 수리공 항승 (0) | 2024.01.16 |
[백준 4796 / JAVA] 캠핑 (0) | 2024.01.16 |