Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 일본어학습지
- 인프런
- 일본어독학
- js
- 코딩테스트
- 백준
- 정렬
- 삼성
- 카카오
- 코테
- stack
- array
- 코테준비
- 알고리즘
- 가벼운학습지후기
- 일본어공부
- 프로그래머스
- 가벼운학습지
- SWEA
- 자바
- javascript
- 스텍
- 자료구조
- 마이라이트
- mybatis
- 삼성소프트웨어아카데미
- 자바스크립트
- 코딩
- 성인학습지
- java
Archives
- Today
- Total
개발에 AtoZ까지
[JAVA][Array] MeetingRoom 본문
반응형
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 |