12주차 · 체크포인트 2
보통정렬

회의 시간 겹침 판정

각 원소가 [시작, 끝]인 회의 배열 meetings가 주어져요. 시간이 겹치는 두 회의가 하나라도 있으면 true, 하나도 없으면 false를 반환해요.

한 회의가 끝나는 시각에 다른 회의가 시작하는 건 겹치는 것으로 보지 않아요(끝 = 다음 시작은 괜찮아요).

예시

예시 1
예시 2

제한 사항

  • 1 ≤ meetings.length ≤ 100,000
  • 0 ≤ 시작 < 끝 ≤ 1,000,000,000
시작 시각 기준으로 정렬한 뒤, 지금까지 본 회의들의 가장 늦은 끝 시각을 기억해요. 새 회의의 시작이 그 값보다 앞이면 겹치는 거예요. 정렬돼 있어서 한 번만 훑으면 돼요.
javascript
function meetingOverlap(meetings) {
const sorted = [...meetings].sort((a, b) => a[0] - b[0]);
let maxEnd = -Infinity;
for (const [start, end] of sorted) {
if (start < maxEnd) return true;
maxEnd = Math.max(maxEnd, end);
}
return false;
}
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.