백준 1931번 회의실 배정 JAVA

YB·2024년 12월 28일

링크텍스트

설명

만약 입력이 아래와 같을 경우
6
1 4
2 3
3 5
0 1
0 2
1 3
코드에 나온대로 정렬하면
[0, 1],
[0, 2],
[1, 3],
[2, 3],
[1, 4],
[3, 5]로 정렬된다.

첫 번째 회의 [0, 1] 선택: 시작 시간 0 ≥ before(=0), 선택 가능.
업데이트: before = 1, count = 1.

두 번째 회의 [0, 2]는 건너뜀: 시작 시간 0 < before(=1), 선택 불가.

세 번째 회의 [1, 3] 선택: 시작 시간 1 ≥ before(=1), 선택 가능.
업데이트: before = 3, count = 2.

네 번째 회의 [2, 3]는 건너뜀: 시작 시간 2 < before(=3), 선택 불가.

다섯 번째 회의 [1, 4]는 건너뜀: 시작 시간 1 < before(=3), 선택 불가.

여섯 번째 회의 [3, 5] 선택: 시작 시간 3 ≥ before(=3), 선택 가능.
업데이트: before = 5, count = 3

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

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int n = Integer.parseInt(br.readLine());

        int [][] meetings = new int[n][2];
        int count = 0;
        int before = 0;

        for(int i=0;i<n;i++){
            st = new StringTokenizer(br.readLine());

            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());

            meetings[i][0] = start;
            meetings[i][1] = end;
        }

        Arrays.sort(meetings, 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];
                } 
        });

        for(int i=0;i<n;i++){
            if(before<=meetings[i][0]){
                before = meetings[i][1];
                count++;
            }
        }

        System.out.println(count);
    } 
}

참고 글
https://st-lab.tistory.com/145
https://propercoding.tistory.com/295

profile
안녕하세요

0개의 댓글