
만약 입력이 아래와 같을 경우
6
1 4
2 3
3 5
0 1
0 2
1 3
코드에 나온대로 정렬하면
[0, 1],
[0, 2],
[1, 3],
[2, 3],
[1, 4],
[3, 5]로 정렬된다.첫 번째 회의 [0, 1] 선택: 시작 시간 0 ≥ before(=0), 선택 가능.
업데이트: before = 1, count = 1.두 번째 회의 [0, 2]는 건너뜀: 시작 시간 0 < before(=1), 선택 불가.
세 번째 회의 [1, 3] 선택: 시작 시간 1 ≥ before(=1), 선택 가능.
업데이트: before = 3, count = 2.네 번째 회의 [2, 3]는 건너뜀: 시작 시간 2 < before(=3), 선택 불가.
다섯 번째 회의 [1, 4]는 건너뜀: 시작 시간 1 < before(=3), 선택 불가.
여섯 번째 회의 [3, 5] 선택: 시작 시간 3 ≥ before(=3), 선택 가능.
업데이트: before = 5, count = 3
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int [][] meetings = new int[n][2];
int count = 0;
int before = 0;
for(int i=0;i<n;i++){
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
meetings[i][0] = start;
meetings[i][1] = end;
}
Arrays.sort(meetings, 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];
}
});
for(int i=0;i<n;i++){
if(before<=meetings[i][0]){
before = meetings[i][1];
count++;
}
}
System.out.println(count);
}
}

참고 글
https://st-lab.tistory.com/145
https://propercoding.tistory.com/295