Programmers

[프로그래머스 / 파이썬 풀이] 네트워크

Hoo_Dev 2023. 1. 9. 13:45
def solution(n, computers):
    global arr
    answer = 0
    arr = [[] for _ in range(n)]
    visited = [0] * n

    for i in range(n):
            for j in range(n):
                if computers[i][j] != 0 and i != j:
                    arr[i].append(j)
                    
    def dfs(a):
        global arr
        for i in arr[a]:
            if visited[i] == 0:
                visited[i] = 1
                dfs(i)

    for q in range(n):
        if visited[q] == 0:
            dfs(q)
            answer += 1
            
    return answer

그래프를 활용한 dfs풀이.

우선 양방향 그래프와 컴퓨터 개수에 맞춰 방문 배열을 만들어 준 후 dfs를 통해 탐색한다.

dfs가 끝날 때 마다 한개의 네트워크가 이뤄지는 것이므로 dfs가 끝난 후 answer 을 +1 해준다.