Lv3 프로그래머스(Programmers)[Python][파이썬] 네트워크

"""
출처:프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/43162
"""

# 풀이 과정
from collections import defaultdict
from collections import deque
import copy


def solution(n, computers):
network = defaultdict(set)
result = []

for i in range(len(computers)):
network[i].add(i)
for j in range(len(computers[0])):
if computers[i][j] == 1:
network[i].add(j)
network[j].add(i)

check = deque([i for i in range(n)])

visit = set([])

new = set([])

while check:
start = check.popleft()

if start in visit:
continue

q = deque([start])

while q:
v = q.popleft()
visit.add(v)
new.add(v)

for end in network[v]:
if not end in visit and not end in new:
q.append(end)

net = copy.deepcopy(new)

result.append(net)

return len(result)