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 해준다.