File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed
Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * 32m31s 소요
3+ *
4+ * 시간복잡도 : O(n) (n: intervals의 길이)
5+ *
6+ * 구간들의 배열과 새로운 구간이 주어질 때, 구간들을 병합한 결과를 반환하는 문제입니다.
7+ *
8+ * 구간들을 순회하면서 새로운 구간과 겹치는 구간을 병합합니다.
9+ * 새로운 구간이 구간들보다 클 때까지 구간들을 병합합니다.
10+ * 새로운 구간이 구간들보다 작을 때까지 구간들을 병합합니다.
11+ * 나머지 구간들을 결과에 추가합니다.
12+ * 결과를 반환합니다.
13+ */
14+ var insert = function ( intervals , newInterval ) {
15+ const result = [ ] ;
16+ let i = 0 ;
17+
18+ // newInterval 이전의 겹치지 않는 구간 추가
19+ while ( i < intervals . length && intervals [ i ] [ 1 ] < newInterval [ 0 ] ) {
20+ result . push ( intervals [ i ] ) ;
21+ i ++ ;
22+ }
23+
24+ // newInterval과 겹치는 구간 병합
25+ while ( i < intervals . length && intervals [ i ] [ 0 ] <= newInterval [ 1 ] ) {
26+ newInterval [ 0 ] = Math . min ( newInterval [ 0 ] , intervals [ i ] [ 0 ] ) ;
27+ newInterval [ 1 ] = Math . max ( newInterval [ 1 ] , intervals [ i ] [ 1 ] ) ;
28+ i ++ ;
29+ }
30+ result . push ( newInterval ) ; // 병합된 구간 추가
31+
32+ // newInterval 이후의 겹치지 않는 구간 추가
33+ while ( i < intervals . length ) {
34+ result . push ( intervals [ i ] ) ;
35+ i ++ ;
36+ }
37+
38+ return result ;
39+ } ;
You can’t perform that action at this time.
0 commit comments