Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.
Example 1:
Input : [[0,30][5,10],[15,20]]
Output : false
Example 2 :
Input : [[7,10],[2,4]]
Output : true
Solution
1. 시작 시간 기준으로 Sorting.
2. 이전의 끝 > 다음의 시작 Compare.
의사코드->Java 언어로 구현
//Interval 클래스 구현classInterval {int start;int end;//constructor(생성자)로 초기화Interval() {this.start=0;this.end=0; }Interval(int s,int e) {this.start= s;this.end= e; }}//Solution 시작publicclassMeetingRoom {publicstaticvoidmain(String[] args) {MeetingRoom a =newMeetingRoom();Interval in1 =newInterval(0,30);Interval in2 =newInterval(10,15);Interval in3 =newInterval(20,25);Interval[] intervals = {in1,in2,in3};System.out.println(a.solve(intervals)); }publicbooleansolve(Interval[] intervals) {if(intervals ==null)returnfalse;print(Intervals);//1.시작 시간 기준으로 Sorting.Arrays.sort(intervals, Comp);//2.이전의 끝 > 다음의 시작 Compare.for(int i=1; i<intervals.length;i++) {if(intervals[i-1].end> intervals[i].start)returnfalse; }returntrue; }Comparator<Interval> Comp =newComparator<Interval>(){ @Overridepublicintcompare(Interval o1,Interval o2) {returno1.start-o2.start; } };publicvoidprint(Interval[] intervals) {for(int i =0; i<intervals.length; i++) {Interval in = intervals[i];System.out.println(in.start+" "+in.end); } }}
Java 복습
Compartor와 Comparable
- Comparable : 기본 정렬기준을 구현하는 데 사용
- Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용