Skip to content

Commit 098c1b0

Browse files
authored
Merge pull request #1579 from Moonjonghoo/main
[moonjonghoo] WEEK 11 Solutions
2 parents 3426685 + fa5da0f commit 098c1b0

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var maxPathSum = function (root) {
2+
let maxSum = -Infinity;
3+
4+
function dfs(node) {
5+
if (node === null) return 0; // 6) Base Case
6+
const left = Math.max(dfs(node.left), 0); // 8) Pruning
7+
const right = Math.max(dfs(node.right), 0); // 8) Pruning
8+
9+
const currentSum = left + node.val + right; // 9) Pivot Sum
10+
maxSum = Math.max(maxSum, currentSum); // 7) Global Max
11+
12+
return node.val + Math.max(left, right); // 10) Return Value
13+
}
14+
15+
dfs(root); // 4) DFS ์‹œ์ž‘
16+
console.log(maxSum); // ์ตœ์ข… ๋‹ต ์ถœ๋ ฅ
17+
};

โ€Žmerge-intervals/moonjonghoo.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
function merge(intervals) {
2+
if (intervals.length === 0) return [];
3+
4+
// 1) ์‹œ์ž‘์  ๊ธฐ์ค€ ์ •๋ ฌ
5+
intervals.sort((a, b) => a[0] - b[0]);
6+
7+
const merged = [];
8+
for (const interval of intervals) {
9+
// 2) ๊ฒฐ๊ณผ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ๊ตฌ๊ฐ„
10+
const last = merged[merged.length - 1];
11+
12+
// 3) ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ ๊ตฌ๊ฐ„ ์ถ”๊ฐ€
13+
if (!last || interval[0] > last[1]) {
14+
merged.push(interval);
15+
} else {
16+
// 4) ๊ฒน์น˜๋ฉด ๋ณ‘ํ•ฉ: ๋์  ํ™•์žฅ
17+
last[1] = Math.max(last[1], interval[1]);
18+
}
19+
}
20+
return merged;
21+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Time Complexity: O(n + e) โ€” ๋…ธ๋“œ n๊ฐœ์™€ ๊ฐ„์„  e๊ฐœ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ์ˆœํšŒ
2+
// Space Complexity: O(n + e) โ€” ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ์ €์žฅ O(n+e), ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ ์ตœ์•… O(n)
3+
function countComponents(n, edges) {
4+
// ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
5+
const adj = Array.from({ length: n }, () => []);
6+
for (const [u, v] of edges) {
7+
adj[u].push(v);
8+
adj[v].push(u);
9+
}
10+
11+
const visited = Array(n).fill(false);
12+
let count = 0;
13+
14+
function dfs(u) {
15+
visited[u] = true;
16+
for (const v of adj[u]) {
17+
if (!visited[v]) dfs(v);
18+
}
19+
}
20+
21+
// ๋ชจ๋“  ๋…ธ๋“œ ์ˆœํšŒ
22+
for (let i = 0; i < n; i++) {
23+
if (!visited[i]) {
24+
count++;
25+
dfs(i);
26+
}
27+
}
28+
29+
return count;
30+
}

0 commit comments

Comments
ย (0)