* 순서
- 문제
- 문제설명
- 문제풀이
- 최종코드
- 문제
- 문제설명:
두 이벤트(시작 시간, 끝나는 시간)이 배열로 주어졌을 때
겹치는 시간이 있는지 없는지를 구하시오
- 문제풀이:
1. 각각의 String 이벤트를 LocalTime으로 parse한다.(parseStringToLocalTime() 이용)
2. 시간이 겹치는지 isBefore(), isAfter() 이용
3. 시간이 같을 경우 equals() 이용
haveConflict(): 시간이 겹치는지, 시간이 같은지 체크하는 메서드
public static boolean haveConflict(String[] event1, String[] event2) {
LocalTime localTime1Start = parseStringToLocalTime(event1[0]);
LocalTime localTime1End = parseStringToLocalTime(event1[1]);
LocalTime localTime2Start = parseStringToLocalTime(event2[0]);
LocalTime localTime2End = parseStringToLocalTime(event2[1]);
if(localTime1Start.isBefore(localTime2Start) && localTime1End.isAfter(localTime2Start)) {
return true;
}
if(localTime1End.equals(localTime2Start)) {
return true;
}
if (localTime2Start.isBefore(localTime1Start) && localTime2End.isAfter(localTime1Start)) {
return true;
}
if(localTime2End.equals(localTime1Start)) {
return true;
}
return false;
}
parseStringToLocalTime: event를 LocalTime으로 parse하는 메서드
private static LocalTime parseStringToLocalTime(String event) {
LocalTime parse = LocalTime.parse(event, DateTimeFormatter.ISO_TIME);
return parse;
}
- 최종코드
package coding;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String[] event1 = {"01:15","02:00"};
String[] event2 = {"02:00","03:00"};
// String[] event1 = {"01:00","02:00"};
// String[] event2 = {"01:20","03:00"};
// String[] event1 = {"10:00","11:00"};
// String[] event2 = {"14:00","15:00"};
boolean answer = haveConflict(event1, event2);
System.out.println("answer = " + answer);
}
public static boolean haveConflict(String[] event1, String[] event2) {
LocalTime localTime1Start = parseStringToLocalTime(event1[0]);
LocalTime localTime1End = parseStringToLocalTime(event1[1]);
LocalTime localTime2Start = parseStringToLocalTime(event2[0]);
LocalTime localTime2End = parseStringToLocalTime(event2[1]);
if(localTime1Start.isBefore(localTime2Start) && localTime1End.isAfter(localTime2Start)) {
return true;
}
if(localTime1End.equals(localTime2Start)) {
return true;
}
if (localTime2Start.isBefore(localTime1Start) && localTime2End.isAfter(localTime1Start)) {
return true;
}
if(localTime2End.equals(localTime1Start)) {
return true;
}
return false;
}
private static LocalTime parseStringToLocalTime(String event) {
LocalTime parse = LocalTime.parse(event, DateTimeFormatter.ISO_TIME);
return parse;
}
}
'Algorithm' 카테고리의 다른 글
[정렬 알고리즘] 선택정렬(Selection Sort), 삽입정렬(Insertion Sort) (0) | 2023.05.21 |
---|---|
[프로그래머스] Lv.0 삼각형의 완성조건 (2) (0) | 2022.10.28 |
[프로그래머스] Lv.0 안전지대 [JAVA] (0) | 2022.10.27 |
백준 3009. 네 번째 점(Java) (0) | 2022.08.07 |
백준 17626. Four Squares (Java) (0) | 2022.06.23 |
댓글