본문 바로가기
반응형
Algorithm

[LeetCode] 2446. Determine if Two Events Have Conflict​

by brightGarden02 2022. 10. 23.

* 순서

- 문제

- 문제설명

- 문제풀이

- 최종코드

 

- 문제

 

- 문제설명:

두 이벤트(시작 시간, 끝나는 시간)이 배열로 주어졌을  때

겹치는 시간이 있는지 없는지를 구하시오

 

 

- 문제풀이:

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;
    }
}

댓글


반응형
반응형