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 |
Tags
- 그리디알고리즘
- 백준
- 자료구조
- SWEA
- 정렬
- 자바스크립트
- 스텍
- 코딩
- 삼성소프트웨어아카데미
- AtoZ0403
- 코테준비
- 코테
- 콜백지옥
- stack
- 프로그래머스
- javascript
- 알고리즘
- 카카오
- 중간 평균값 구하기
- spring
- NestJS
- mybatis
- 배열
- java
- array
- 삼성
- 코딩테스트
- js
- 인프런
- 자바
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 |
Comments