728x90
300x250
런타임 에러가 났던 부분은 Comparator를 통해 sort할 때, -1, 0 ,1로.. return했을 때이다.
compareTo를 써서 해결은 했는데.. 왜 -1,1로 하면 런타임 에러가 나는걸까? 자바버전의 오류인가?
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static ArrayList<Integer[]> list = new ArrayList<Integer[]>();
public static int ans = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
list.add(new Integer[] { start, end });
}
// 종료시간 기준으로 오름차순 정렬
Collections.sort(list, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
if (o1[1] == o2[1]) {
return o1[0].compareTo(o2[0]);
} else
return o1[1].compareTo(o2[1]);
}
});
// for (Integer[] i: list) {
// System.out.println(i[0]+", "+i[1]);
// }
int curr = 0; // 현재 지점
for (int i = 0; i < list.size(); i++) {
Integer[] meeting = list.get(i);
if (curr <= meeting[0]) {
curr = meeting[1];
ans++;
}
}
System.out.println(ans);
}
}
728x90
'알고리즘 > 그 외' 카테고리의 다른 글
백준 11399번: ATM [그리디][Greedy] - Java (0) | 2020.10.02 |
---|---|
백준 4150번: 피보나치 수 - Java (0) | 2020.10.02 |
백준 2875번: 대회 or 인턴 [구현][그리디][수학] - Java (0) | 2020.10.01 |
백준 5585번: 거스름돈 [그리디][Greedy] - Java (0) | 2020.10.01 |
백준 11047번: 동전 0 [그리디][Greedy] - Java (0) | 2020.10.01 |