박종훈 알고리즘 블로그

(Leetcode) 252 - Meeting Schedule

기회가 되어 달레님의 스터디에 참여하여 시간이 될 때마다 한문제씩 풀어보고 있다.

https://neetcode.io/practice


유료 문제이다. neetcode에서 풀어보는 기능이 있어서 neetcode에서 풀어보았다. input 갯수가 다르려나 싶다.

내가 작성한 풀이

public class Solution {
    public boolean canAttendMeetings(List<Interval> intervals) {
        intervals = intervals.stream().sorted(Comparator.comparingInt(o -> o.start)).toList();
        for (int i = 0; i < intervals.size() - 1; i++) {
            if(intervals.get(i).end > intervals.get(i+1).start) {
                return false;
            }
        }
        return true;
    }
}
  • 입력값을 정렬한다.
  • 정렬된 list에서 중복되는 부분이 있는지 확인한다.
    • i의 end 가 i+1의 start 보다 크면 중복된다.

TC, SC

시간 복잡도는 O(nlogn)이고 공간 복잡도는 O(n)이다. 여기서 nlogn 인 이유는 정렬이 들어가기 때문이다. O(n)인 이유는 정렬된 list를 생성하기 때문이다.