Skip to content

Commit 5e8615b

Browse files
committed
solve 3
1 parent ae3bd32 commit 5e8615b

File tree

1 file changed

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

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
'''
2+
n: 노드 개수 / e: 간선 개수
3+
시간 복잡도: O(n + e)
4+
공간 복잡도: O(n + e)
5+
'''
6+
from typing import List
7+
8+
class Solution:
9+
def count_components(self, n: int, edges: List[List[int]]) -> int:
10+
graph = {i: [] for i in range(n)}
11+
for u, v in edges:
12+
graph[u].append(v)
13+
graph[v].append(u)
14+
15+
visited = set()
16+
def dfs(node):
17+
visited.add(node)
18+
19+
for neighbor in graph[node]:
20+
if neighbor not in visited:
21+
dfs(neighbor)
22+
23+
count = 0
24+
for node in graph:
25+
if node not in visited:
26+
count += 1
27+
dfs(node)
28+
29+
return count
30+
31+
# Test function
32+
def test():
33+
solution = Solution()
34+
test_cases = [
35+
(3, [[0, 1], [0, 2]], 1),
36+
(6, [[0, 1], [1, 2], [2, 3], [4, 5]], 2),
37+
(4, [[0, 1], [2, 3]], 2),
38+
(1, [], 1),
39+
(4, [[0, 1], [2, 3], [1, 2]], 1)
40+
]
41+
42+
for i, (n, edges, expected) in enumerate(test_cases):
43+
result = solution.count_components(n, edges)
44+
print(f"Test case {i+1}: Input: n={n}, edges={edges} -> Output: {result}, Expected: {expected}")
45+
if result != expected:
46+
print(f"# Test case {i+1} failed: expected {expected}, got {result}")
47+
print("\n")
48+
49+
# Run tests
50+
test()

0 commit comments

Comments
 (0)