[백준] 1931번 회의실 배정 (java, 그리디)

728x90
반응형

www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

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

www.acmicpc.net

회의실 끝나는 시간을 첫 번째 기준으로, 끝나는 시간이 같다면 시작시간 기준으로 오름차순 정렬한다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main  {
	static class MeetingRoom implements Comparable<MeetingRoom>{
		int start,end;

		public MeetingRoom( int start, int end) {
			super();
			this.start = start;
			this.end = end;
		}

		@Override
		public int compareTo(MeetingRoom o) {
//			 종료 시간이 같다면 시작 시간이 빠르게 
			int diff=this.end-o.end;
			return diff!=0?diff:this.start-o.start;
		}
		
	}

		public static void main(String[] args) {
			Scanner sc=new Scanner(System.in);
			int n=sc.nextInt();
			MeetingRoom[] m=new MeetingRoom[n];
			
			for (int i = 0; i < n; i++) {
				m[i]=new MeetingRoom(sc.nextInt(),sc.nextInt());
			}
			System.out.println(getSchedule(m));
		}
	
		public static int getSchedule(MeetingRoom[] m){
			
			ArrayList<MeetingRoom> list=new ArrayList<MeetingRoom>();
			Arrays.sort(m);
			list.add(m[0]);
			for (int i = 1; i < m.length; i++) {
				if(list.get(list.size()-1).end<=m[i].start) {
					list.add(m[i]);
				}
			}
			return list.size();
		}
	
}
728x90
반응형
TAGS.

Comments