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 해준다.
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 가장 큰 수 (0) | 2023.01.11 |
---|---|
[프로그래머스 / 파이썬 풀이] 가장 먼 노드 (0) | 2023.01.10 |
[프로그래머스 / 파이썬 풀이] 게임 맵 최단거리 (0) | 2023.01.09 |
[프로그래머스 / 파이썬 풀이] 모음사전 (0) | 2023.01.06 |
[프로그래머스 / 파이썬 풀이] 피로도 (0) | 2023.01.05 |