강의로 돌아가기
박범수

union-find 파이썬으로 구현한 코드입니다(테케9 해결)

마지막에 네트워크 개수 셀 때 i의 부모를 기준으로 세야 문제가 생기지 않습니다

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""
dfs or union-find
마지막에 그래프 개수 셀 때 i를 바로 찾는게 아니라 parent[i]를 기준으로 카운트해야함
"""
from collections import defaultdict


def find(x):
    global parent

    if x != parent[x]:
        parent[x] = find(parent[x])
    return parent[x]


def union(x, y):
    global parent

    a, b = find(x), find(y)
    if a < b:
        parent[b] = a
    else:
        parent[a] = b


def solution(n, computers):
    global parent

    parent = [i for i in range(n)]

    for i in range(n):
        for j in range(n):
            if computers[i][j]:
                union(i, j)

    di = defaultdict(int)
    for i in parent:
        di[find(i)] += 1

    return len(di.items())
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.