백준 1931번: 회의실배정 [그리디][정렬] - Java :: 매운코딩
728x90
300x250

www.acmicpc.net/problem/1931

 

1931번: 회의실배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

런타임 에러가 났던 부분은 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

+ Recent posts