개발에 AtoZ까지

[JAVA][Array] MeetingRoom 본문

코딩테스트 준비/기타문제

[JAVA][Array] MeetingRoom

AtoZ 개발자 2021. 1. 25. 21:41
반응형

1. 문제

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. 

Input: [[0,30],[5,10],[15,20]] 
Output: false 

Input: [[7,10],[2,4]] 
Output: true

 

2. 문제해설

회의실이 1개가 있는데 Input에 들어오는 사용시간으로 회의가 모두 진행이 가능한지 여부를 판단하는 문제이다.

 

3. 코드포맷

class Interval {
	int start;
	int end;

	Interval() {
		this.start = 0;
		this.end = 0;
	}

	Interval(int s, int e) {
		this.start = s;
		this.end = e;
	}

	@Override
	public String toString() {
		return start + ", "+end;
	}
	
}

public class MeetingRoom {
	public static void main(String[] args) {
		MeetingRoom a = new MeetingRoom();

		Interval in1 = new Interval(15, 20);
		Interval in2 = new Interval(5, 10);
		Interval in3 = new Interval(0, 30);

		Interval[] intervals = { in1, in2, in3 };
		System.out.println(a.solve(intervals));
	}
}

 

4. 접근 방법

Input에 들어온 값을 회의 시작 시간(각 회의 배열의 0번 인덱스)을 기준으로 정렬해주고 회의 끝날시간(각 회의 배열의 1번 인덱스) 과 그 다음 회의 시작 시간과 비교해준다.

 

ex) Input: [[0,30],[5,10],[15,20]] 일때 아래와 같이 겹치기 때문에 모든 회의가 진행될 수는 없습니다.

5. 코드

class Interval {
	int start;
	int end;

	Interval() {
		this.start = 0;
		this.end = 0;
	}

	Interval(int s, int e) {
		this.start = s;
		this.end = e;
	}

	@Override
	public String toString() {
		return start + ", "+end;
	}
	
}

public class MeetingRoom {
	public static void main(String[] args) {
		MeetingRoom a = new MeetingRoom();

		Interval in1 = new Interval(15, 20);
		Interval in2 = new Interval(5, 10);
		Interval in3 = new Interval(0, 30);

		Interval[] intervals = { in1, in2, in3 };
		System.out.println(a.solve(intervals));
	}

	private boolean solve(Interval[] intervals) {
		//정렬
		Arrays.sort(intervals,comp);
		for(int i=0;i<intervals.length-1;i++) {
			if(intervals[i].end>=intervals[i+1].start) {
				return false;
			}
		}
		return true;
	}
	
	//비교시 기준을  만들기 위해 사용
	Comparator<Interval> comp = new Comparator<Interval>() {
		@Override
		public int compare(Interval o1, Interval o2) {
			return o1.start-o2.start;
		}
	};
	
}

 

 

반응형

'코딩테스트 준비 > 기타문제' 카테고리의 다른 글

[JAVA][Array] LicenseKey Formatting  (0) 2021.01.27
[JAVA][Array] Jewels And Stones  (0) 2021.01.27
[JAVA][Array] MeetingRoom2  (0) 2021.01.26
[JAVA][Array] MergeInterval  (0) 2021.01.26
[JAVA][Array] Daily Temperature  (0) 2021.01.26
[JAVA][Array] TwoSum  (0) 2021.01.26
[JAVA][Array] MoveZeros  (0) 2021.01.25
Comments