백준 회의실 배정
백준 회의실 배정
코드
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
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];
int cnt = 0;
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, 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 end = 0;
for(int i = 0; i<time.length;i++){
if(end<=time[i][0]){
end = time[i][1];
cnt++;
}
}
System.out.print(cnt);
}
}
설명
종료 시간을 기준으로 2차원 배열을 정렬하는데 이 때 종료시간이 같을 경우 시작시간이 빠른순으로 정렬합니다. 정렬된 배열에서 종료시간이 다음 회의 시작 시간보다 작거나 같다면 end를 갱신하고 카운트를 증가시켜줍니다.