プログラマネットワーク


質問リンク


https://programmers.co.kr/learn/courses/30/lessons/43162

方法

  • ネットワーク内のすべてのノードにアクセスすると、そのネットワークはアクセスが終了するネットワークとなる.
  • dfsを用いてネットワーク数を1つずつ囲んでいる.
  • コード(Python)

    def solution(n, graph):
        visited = [False] * n
        count = 0  # 네트워크 개수를 세는 변수
    
        def dfs(i):
            if visited[i]: # 방문 했다면 종료
                return
    
            visited[i] = True # 방문 처리 해준다
            for next_i, connected in enumerate(graph[i]):
                # 연결이 안됐거나, 자기 자신을 방문하거나, 이미 방문했으면 continue
                if not connected  \ 
                        or next_i == i \
                        or visited[next_i]:
                    continue
                dfs(next_i)
    
        # 모든 노드를 돌면서 네트워크를 하나씩 방문한다
        for i in range(n):
            if not visited[i]:
                count += 1
                dfs(i)
    
        return count