Skip to content

Commit 9a17fb9

Browse files
committed
add: solve #263 Number of Connected in an Undirected Graph with ts
1 parent 33ca88e commit 9a17fb9

File tree

1 file changed

+49
-0
lines changed
  • number-of-connected-components-in-an-undirected-graph

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* ์ฃผ์–ด์ง„ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ๋œ ์ปดํฌ๋„ŒํŠธ(์—ฐ๊ฒฐ ์š”์†Œ)์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
3+
*
4+
* @param {number} n - ๋…ธ๋“œ์˜ ์ˆ˜
5+
* @param {number[][]} edges - ๊ฐ„์„ ์˜ ์ •๋ณด
6+
* @returns {number} - ์—ฐ๊ฒฐ๋œ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ์ˆ˜
7+
*
8+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
9+
* - ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐ
10+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
11+
* - ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฉ๋ฌธ ๋ฐฐ์—ด ์‚ฌ์šฉ
12+
*/
13+
function countComponents(n: number, edges: number[][]): number {
14+
// ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
15+
const graph: Map<number, number[]> = new Map();
16+
for (let i = 0; i < n; i++) {
17+
graph.set(i, []);
18+
}
19+
for (const [a, b] of edges) {
20+
graph.get(a)?.push(b);
21+
graph.get(b)?.push(a);
22+
}
23+
24+
// ๋ฐฉ๋ฌธ ๋ฐฐ์—ด ์ƒ์„ฑ
25+
const visited: boolean[] = new Array(n).fill(false);
26+
let count = 0;
27+
28+
// ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS)
29+
const dfs = (node: number): void => {
30+
visited[node] = true;
31+
for (const neighbor of graph.get(node)!) {
32+
if (!visited[neighbor]) {
33+
dfs(neighbor);
34+
}
35+
}
36+
}
37+
38+
// ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด DFS ์ˆ˜ํ–‰
39+
for (let i = 0; i < n; i++) {
40+
if (!visited[i]) {
41+
// ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ ์š”์†Œ ๋ฐœ๊ฒฌ
42+
count++;
43+
dfs(i);
44+
}
45+
}
46+
47+
return count;
48+
}
49+

0 commit comments

Comments
ย (0)