기본 BFS/DFS
탐색 문제
연결되어 있는 네트워크의 개수를 return
서로 다른 네트워크들의 개수를 구하는 방법을 찾는게 중요
탐색 시작 노드로 첫번째 노드를 기준으로 잡기
기준 노드와 연결되어 있는 노드들을 탐색 후, answer += 1
이후 방문되지 않은 노드들이 아직 존재한다면 위의 과정을 반복
결과적으로 한번 기준 노드들과 직접, 간접적으로 연결되어 있는 노드들까지의 탐색이 완료되었을때의 상태가 하나의 네트워크를 찾은 상태라고 생각하면 됨
from collections import deque
def solution(n, computers):
answer = 0
visited = [False for _ in range(n)]
queue = deque()
for node in range(n):
if visited[node] == False:
visited[node] = True
queue.append(node)
while queue:
item = queue.popleft()
visited[item] = True
# 자신을 가리키는건 제외
for element in range(n):
if item != element and computers[item][element] == 1:
if visited[element] == False: # 방문하지 않았다면,
queue.append(element)
answer += 1
return answer