반응형
https://www.acmicpc.net/problem/1931
한 개의 회의실을 최대한 많이 사용할 수 있도록 했을 때의 회의 개수를 구하는 문제이다.
입력을 모두 받은 후 종료시간을 기준으로 정렬한다.
종료시간을 오름차순으로 정렬을 하면 빨리 끝내는 회의를 찾을 수 있고, 더 많은 회의를 할 수 있게 된다.
Arrays.sort(time,new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1]==o2[1] ? o1[0]-o2[0]:o1[1]-o2[1];
}
});
위 코드는 시작과 종료시간이 담겨져 있는 배열 time을 가지고 종료시간을 기준으로 정렬을 한 것이다.
o[1]과 o[1]로 종료시간이 같다면, 시작시간으로 정렬하고, 다르다면 종료시간을 기준으로 정렬하도록 했다.
<최종>
import java.io.*;
import java.util.*;
public class Main {
static int N;
static int[][] time;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N =Integer.parseInt(br.readLine()); //회의의 최대개수
time = new int [N][2];
int cnt=0;
for(int i=0;i<N;i++) {
String[] s = br.readLine().split(" ");
time[i][0]=Integer.parseInt(s[0]); //회의 시작시간
time[i][1]=Integer.parseInt(s[1]); //회의 종료시간
}
Arrays.sort(time,new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1]==o2[1] ? o1[0]-o2[0]:o1[1]-o2[1];
}
});
int prev=0;
for(int i=0;i<N;i++) {
if(prev<=time[i][0]) {
prev=time[i][1];
cnt++;
}
}
System.out.println(cnt);
br.close();
}// main()
}// class Main
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 1932 : 정수 삼각형 (0) | 2023.02.03 |
---|---|
[Java] 백준 1697 : 숨바꼭질 (0) | 2023.02.02 |
[Java] 백준 1149 : RGB거리 (0) | 2023.02.01 |
백준 2667 : 단지번호붙이기 _자바 Java (0) | 2023.02.01 |
백준 2178 : 미로 탐색 _자바 Java (0) | 2023.01.31 |
댓글