Skip to content

Commit 2ce8576

Browse files
committed
feat(soobing): week11 > merge-intervals
1 parent 9b54edd commit 2ce8576

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

โ€Žmerge-intervals/soobing.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* ๋ฌธ์ œ ์„ค๋ช…
3+
* - ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๊ตฌ๊ฐ„์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฌธ์ œ
4+
*
5+
* ์•„์ด๋””์–ด
6+
* 1) ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
7+
* - ์‹œ์ž‘์  ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด์„ ์ •๋ ฌ
8+
* - ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์„ merge ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ์ฒซ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น„๊ต๋Š” ๋‘๋ฒˆ์žฌ ๊ตฌ๊ฐ„๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰
9+
* - ๋จธ์ง€๋œ ๋งˆ์ง€๋ง‰ ๊ตฌ๊ฐ„์˜ ๋๋ณด๋‹ค ํ˜„์žฌ ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘์ ์ด ์ž‘์„ ๊ฒฝ์šฐ ๋จธ์ง€๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ๋Š” ๋จธ์ง€ ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•œ๋‹ค.
10+
*/
11+
function merge(intervals: number[][]): number[][] {
12+
if (intervals.length === 0) return [];
13+
14+
intervals.sort((a, b) => a[0] - b[0]);
15+
16+
const merged: number[][] = [intervals[0]];
17+
18+
for (let i = 1; i < intervals.length; i++) {
19+
const lastMerged = merged[merged.length - 1];
20+
const current = intervals[i];
21+
if (current[0] <= lastMerged[1]) {
22+
lastMerged[1] = Math.max(current[1], lastMerged[1]);
23+
} else {
24+
merged.push(current);
25+
}
26+
}
27+
return merged;
28+
}

0 commit comments

Comments
ย (0)