https://www.acmicpc.net/problem/1931
import java.util.*;
import java.io.*;
public class Main {
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb=new StringBuilder();
static int[][] meeting;
public static void main(String args[]) throws Exception {
int num=Integer.parseInt(br.readLine());
meeting=new int[num][2];
for(int i=0;i<num;i++) {
String s[]=br.readLine().split(" ");
meeting[i][0]=Integer.parseInt(s[0]);
meeting[i][1]=Integer.parseInt(s[1]);
}
Arrays.sort(meeting, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
if(o1[1]==o2[1]) {
return Integer.compare(o1[0], o2[0]);
}
return Integer.compare(o1[1], o2[1]);
}
});
int cnt=0;
int end=-1;
for(int i=0;i<num;i++) {
if(meeting[i][0]>=end) {
end=meeting[i][1];
cnt++;
}
}
System.out.println(cnt);
}
}
회의실 시작 시간과 종료 시간을 meeting 배열에 저장합니다.
종료 시간을 기준으로 오름차순으로 배열하고, 종료 시간이 같을 경우 시작 시간이 더 느린 시간을 기준으로 배열합니다.
이후 배열에서 끝나는 시간보다 시작 시간이 작거나 같으면 결과값을 +1하고, 종료 시간 변수인 end에 현재 회의 종료 시간을 갱신해줍니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 11051번] 이항 계수 2(JAVA) (0) | 2020.08.10 |
---|---|
[BOJ 11050번] 이항 계수 1(JAVA) (0) | 2020.08.10 |
[BOJ 11047번] 동전 0(JAVA) (0) | 2020.08.08 |
[BOJ 12865번] 평범한 배낭(JAVA) (0) | 2020.08.08 |
[BOJ 2565번] 전깃줄(JAVA) (0) | 2020.08.05 |