JAVA/Java 백준 문제풀이
자바, 백준 1931
Do.K
2022. 4. 9. 02:10
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
한시간 넘게 고민했다
어떤식으로 풀어나가야할지 감은 잡혔는데 재배열을 어떻게 해야하는지 몰라서 막혔다
comparator, comparable 은 내겐 없는 지식이었다..
30분정도만 고민하고 가닥이 잡히면 해답을 봐야할성 싶다
없는 지식은 문제로 익히는게 기억에 오래남는듯하여..
아래 글을 참조하였음
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[][] arr = new int[N][2];
for (int i=0;i<N;i++) {
for (int j=0;j<2;j++) {
arr[i][j] = sc.nextInt();
}
}
// for (int i=0;i<N;i++) { 위와 같으나 다르게 표현한 것
// arr[i][0] = sc.nextInt();
// arr[i][1] = sc.nextInt();
// }
Arrays.sort(arr, new Comparator<int[]>(){ //arr를 오버라이딩한 compare에 맞춰 재배열하겠다
@Override
public int compare(int[] o1, int[]o2) {
if (o1[1]==o2[1]) { //종료시간이 같으면
return o1[0] - o2[0]; //시작시간이 빠른쪽이 먼저되게
}
return o1[1] - o2[1]; //종료시간이 빠른쪽이 먼저되게
}
});
int count=0;
int k=0;
for (int j=0;j<N;j++) {
if ( k<=(arr[j][0])) {
k=arr[j][1];
count++;
}
}
System.out.println(count);
}
}
https://st-lab.tistory.com/145