[LeetCode] 56. Merge Intervals

Chobby·2024년 9월 5일
1

LeetCode

목록 보기
92/194

시작 시점을 기준으로 오름차 순 정렬한 후 순회하며

현재 조회중인 지점의 종료 시간다음 지점의 시작 시간을 비교하여 병합 여부를 판단하면 된다.

😎풀이

function merge(intervals: number[][]): number[][] {
    // 시작 시간 기준 오름차순 정렬
    intervals.sort((a, b) => a[0] - b[0]);
    
    const result = [];
    
    // 현재 처리 중인 interval
    let currentInterval = intervals[0];
    
    // 모든 interval을 순회
    for (let i = 1; i < intervals.length; i++) {
        const nextInterval = intervals[i];
        
        if (currentInterval[1] >= nextInterval[0]) {
            // 끝점을 두 interval 중 더 큰 값으로 업데이트
            currentInterval[1] = Math.max(currentInterval[1], nextInterval[1]);
        } else {
            // 병합할 수 없는 경우, 현재 interval을 결과에 추가하고 다음으로 이동
            result.push(currentInterval);
            currentInterval = nextInterval;
        }
    }
    
    // 마지막으로 처리된 interval 추가
    result.push(currentInterval);
    
    return result;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글