백준 회의실 배정

less than 1 minute read

백준 회의실 배정

회의실배정입출력 회의실배정

코드

import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[][] time = new int[n][2];
        int cnt = 0;
        for(int i = 0; i<n;i++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            time[i][0] = Integer.parseInt(st.nextToken());
            time[i][1] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(time, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[1] == o2[1]){
                    return o1[0]-o2[0];
                }
                return o1[1]-o2[1];
            }
        });
        int end = 0;
        for(int i = 0; i<time.length;i++){
            if(end<=time[i][0]){
                end = time[i][1];
                cnt++;
            }
        }
        System.out.print(cnt);
                
    }
}

설명

종료 시간을 기준으로 2차원 배열을 정렬하는데 이 때 종료시간이 같을 경우 시작시간이 빠른순으로 정렬합니다. 정렬된 배열에서 종료시간이 다음 회의 시작 시간보다 작거나 같다면 end를 갱신하고 카운트를 증가시켜줍니다.