
😎풀이
- 시작시간이 고유하다는 문제의 전제를 통해 시작 시간과 원래 인덱스를 매핑하여 저장
intervals의 시작 시간을 기준으로 내림차 순으로 정렬(빠른 break를 위함)
- 현재 구간과 겹치지 않는 최소 시작의 인덱스를 저장 단, 조건에 맞는 구간이 없는 경우 -1 저장
- 저장된 구간별 가장 인접한 구간의 인덱스 반환
function findRightInterval(intervals: number[][]): number[] {
const originIndex = new Map<number, number>()
for(let i = 0; i < intervals.length; i++) {
const startTime = intervals[i][0]
originIndex.set(startTime, i)
}
const sorted = intervals.toSorted((a, b) => b[0] - a[0])
const rightIntervals = []
for(const [startI, endI] of intervals) {
let minIdx = -1
for(const [startJ, endJ] of sorted) {
if(startJ < endI) break
minIdx = originIndex.get(startJ)
}
rightIntervals.push(minIdx)
}
return rightIntervals
};