종식당

[백준]1931번 : 회의실 배정 - JAVA [자바] 본문

백준

[백준]1931번 : 회의실 배정 - JAVA [자바]

종식당 2025. 3. 17. 20:38
728x90
반응형

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

📝 문제 설명

먼저 회의의 수가 주어지고 회의 수만큼의 회의의 시작 시간과 끝나는 시간이 각각 주어진다. 회의실을 사용하는데 회의가 겹치지 않으면서 최대한 얼마나 사용할 수 있는지 구하면 된다.

✨ 제출 코드

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

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());

        List<int []> lst = new ArrayList<>();


        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());

            lst.add(new int[] {start,end});
        }

        lst.sort((a,b) -> {
            if(a[1] == b[1]){
                return Integer.compare(a[0],b[0]);
            }else{
                return Integer.compare(a[1],b[1]);
            }
        });

        int lastEndTime = 0;
        int count = 0;

        for(int [] item : lst){
            int start = item[0];
            int end = item[1];

            if(start >= lastEndTime){
                count ++;
                lastEndTime = end;
            }
        }
        
        System.out.println(count);
    }
}

 

✌️ 코드 설명

먼저 회의가 끝나는 시간을 기준 오름차순으로 정렬했다. 만약 끝나는 시간이 갔다면 회의가 먼저 시작하는 순서로 정렬했다.

그 후, 이전의 회의가 끝나는 시간보다 다음 회의가 시작하는 시간이 더 클때만 개수를 세주고 회의가 끝나는 시간을 업데이트해준다.

728x90
반응형