본문 바로가기
프로그래밍 문제/BOJ(백준 온라인 저지)

[BOJ 1931번] 회의실 배정(JAVA)

by 테크케찰 2020. 8. 8.

https://www.acmicpc.net/problem/1931

 

1931번: 회의실배정

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

www.acmicpc.net

import java.util.*;
import java.io.*;

public class Main {
	static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
	static StringBuilder sb=new StringBuilder();
	static int[][] meeting;
	
	public static void main(String args[]) throws Exception {
		int num=Integer.parseInt(br.readLine());
		meeting=new int[num][2];
		for(int i=0;i<num;i++) {
			String s[]=br.readLine().split(" ");
			meeting[i][0]=Integer.parseInt(s[0]);
			meeting[i][1]=Integer.parseInt(s[1]);
		}
		Arrays.sort(meeting, new Comparator<int[]>() {

			@Override
			public int compare(int[] o1, int[] o2) {
				// TODO Auto-generated method stub
				if(o1[1]==o2[1]) {
					return Integer.compare(o1[0], o2[0]);
				}
				return Integer.compare(o1[1], o2[1]);
			}
		
		});
		
		int cnt=0;
		int end=-1;
		for(int i=0;i<num;i++) {
			if(meeting[i][0]>=end) {
				end=meeting[i][1];
				cnt++;
			}
		}
		System.out.println(cnt);
	}
	
}



회의실 시작 시간과 종료 시간을 meeting 배열에 저장합니다.

종료 시간을 기준으로 오름차순으로 배열하고, 종료 시간이 같을 경우 시작 시간이 더 느린 시간을 기준으로 배열합니다.

이후 배열에서 끝나는 시간보다 시작 시간이 작거나 같으면 결과값을 +1하고, 종료 시간 변수인 end에 현재 회의 종료 시간을 갱신해줍니다.