[proj] 네트워크

히치키치·2024년 1월 12일
0

알고리즘

목록 보기
3/4

발상
방문했는데 연결되어 있으면 끝까지 내려가서 싹다 방문 처리함
(-> 이거 다 돌고 방문 아닌 거 잡히면 새로운 그룹의 시작 노드인 거임!! 갯수 증가)

코드

def dfs(computers, visited, node):
    visited[node]=True
    for idx, value in enumerate(computers[node]):
        if idx!=node and value==1 and not(visited[idx]):
            dfs(computers, visited,idx)
            #print(node, idx, child)



def solution(n, computers):
    visited = [False] * n
    answer = 0
    start = 0
    visited[start] = start
    for node in range(n):
        if not(visited[node]):
            dfs(computers, visited, node)
            answer+=1

    return answer

반례

tests = [
    [3, [[1, 1, 0], [1, 1, 0], [0, 0, 1]]],
    [3, [[1, 1, 0], [1, 1, 1], [0, 1, 1]]]
]

for n, computers in tests:
    print(solution(n, computers))

// answer: 2, 1

0개의 댓글