[문제 링크]
https://programmers.co.kr/learn/courses/30/lessons/43162
[입출력 예]
n |
computers |
return |
3 |
[[1, 1, 0], [1, 1, 0], [0, 0, 1]] |
2 |
3 |
[[1, 1, 0], [1, 1, 1], [0, 1, 1]] |
1 |
[소스코드]
def solution(n, computers):
#nested function을 이용하면 매번 computers, visited를 넘겨주지 않아도 괜찮다!!!
#scope가 윗방향으로만 탐색되어진다는 걸 항상 기억하자
def dfs(i):
if visited[i]==False:
visited[i]=True
for j in range(len(computers)):
if j != i and computers[i][j]==1:
dfs(j)
visited=[False]*n #1
# 방문 기록하는 배열
count=0
for i in range(n):
if visited[i]==False:
dfs(i)
count+=1
return count