Algorithm, boj, 회의실배정(1931))
풀이
- 회의의 끝나는 시간이 빠를수록 남아있는 시간이 많아진다. 즉, 더 많은 회의를 할 수 있다
배운점
- 끝나는 시간에 따라 정리를 할때 회의 클래스를 지정해서 Comparable을 사용했는데, 이렇게 말고 Arrays.sort로도 정렬할 수 있다.
import java.util.Arrays;
import java.util.Scanner;
public class test1931_greedy_meetingRoom {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int meetingCnt = sc.nextInt();
int[][] meeting = new int[meetingCnt][2];
// 회의시간 입력
for (int i = 0; i < meetingCnt; i++) {
meeting[i][0] = sc.nextInt();
meeting[i][1] = sc.nextInt();
}
Arrays.sort(meeting,(meeting1 , meeting2) -> meeting1[1]==meeting2[1] ? meeting1[0]-meeting2[0] : meeting1[1]-meeting2[1]);
// 끝나는 시간대로 정렬한다.
// 만약 같으면 시작 시간으로 정렬한다.
// 끝나는 시간이 빠를수록 남아있는 시간이 많아진다.즉, 더 많은 회의를 할 수 있다.
int count = 0;
int prevFinish = -1;
for (int i = 0; i < meeting.length; i++) {
if (meeting[i][0]>= prevFinish) {
count++;
prevFinish = meeting[i][1];
}
}
System.out.println(count);
}
}
Reference