회의실 배정

UkJJang·2021년 8월 23일
0
  • 한개의 회의실에서 회의를 진행하는데 회의 시간이 겹치지 않도록하여 최대 회의할 수 있는 수를 구하는 문제
  • 시작시간, 끝나는 시간을 가지는 클래스를 생성하여 ArrayList에 담아 계산 하도록 구현
import java.util.*;

class Body implements Comparable<Body> {
    public int s,e;

    Body(int s, int e) {
        this.s = s;
        this.e = e;
    }

    @Override
    public int compareTo(Body o) {

        if(o.e == this.e) return o.s - this.s;
        return o.e - this.e;
    }
}

public class Main {

    public int solution(ArrayList<Body> arr, int n) {
        int cnt = 0;
        Collections.sort(arr, Collections.reverseOrder()); // 오름차순
        int endHour = Integer.MIN_VALUE;
        for (Body body : arr) {
            if (body.s >= endHour) {
                endHour = body.e;
                cnt++;
            }
        }
        return cnt;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        ArrayList<Body> arr = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            int s = kb.nextInt();
            int e = kb.nextInt();
            arr.add(new Body(s, e));
        }

        System.out.println(T.solution(arr,n));

    }

}
profile
꾸준하게 성실하게

0개의 댓글