Skip to content

Commit 5d87d39

Browse files
committed
add: solve DaleStudy#277 Insert Interval with ts
1 parent a9f62ce commit 5d87d39

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

โ€Žinsert-interval/Yjason-K.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* ์ƒˆ๋กœ์šด interval์„ ๊ธฐ์กด intervals ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜๊ณ  ๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„์„ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
3+
* @param {number[][]} intervals - ๊ธฐ์กด interval ๋ฐฐ์—ด
4+
* @param {number[]} newInterval - ์ถ”๊ฐ€ํ•˜๋ ค๋Š” interval
5+
* @returns {number[][]} - ์ƒˆ๋กœ์šด interval์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•œ ๋ฐฐ์—ด
6+
*
7+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
8+
* - intervals ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ newInterval๊ณผ ๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„์„ ์ฐพ์•„ ๋ณ‘ํ•ฉ
9+
*
10+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
11+
* - ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด์„ ์ƒ์„ฑ.
12+
*/
13+
function insert(intervals: number[][], newInterval: number[]): number[][] {
14+
// ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ newInterval ํ•˜๋‚˜๋งŒ ๊ฐ€์ง„ ๋ฐฐ์—ด๋กœ ์‹œ์ž‘
15+
const result: number[][] = [newInterval];
16+
17+
for (let i = 0; i < intervals.length; i++) {
18+
const newItem = intervals[i];
19+
const lastItem = result.pop()!;
20+
21+
// ํ˜„์žฌ ๊ตฌ๊ฐ„์ด lastItem ๊ตฌ๊ฐ„์˜ ์™ผ์ชฝ์— ์™„์ „ํžˆ ์œ„์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
22+
if (newItem[1] < lastItem[0]) {
23+
result.push(newItem);
24+
result.push(lastItem);
25+
}
26+
// ํ˜„์žฌ ๊ตฌ๊ฐ„์ด lastItem ๊ตฌ๊ฐ„์˜ ์˜ค๋ฅธ์ชฝ์— ์™„์ „ํžˆ ์œ„์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
27+
else if (newItem[0] > lastItem[1]) {
28+
result.push(lastItem);
29+
result.push(newItem);
30+
}
31+
// ๋‘ ๊ตฌ๊ฐ„์ด ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ: ๋ณ‘ํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋ณ‘ํ•ฉ
32+
else {
33+
lastItem[0] = Math.min(lastItem[0], newItem[0]);
34+
lastItem[1] = Math.max(lastItem[1], newItem[1]);
35+
result.push(lastItem);
36+
}
37+
}
38+
39+
return result;
40+
}
41+

0 commit comments

Comments
ย (0)