def solution(n, computers):
answer = 0
visited=[False for i in range(n)]
for com in range(n):
if visited[com]==False:
dfs(n,computers,com,visited)
answer+=1
return answer
def dfs(n,computers,com,visited):
visited[com]=True
for i in range(n):
if i!=com and computers[com][i]==1:
if visited[i]==False:
dfs(n,computers,i,visited)
나는 DFS를 이용해서 풀었다.
visited로 체크를 한다.
처음 for문에서 바깥 리스트 인덱스를 본다. 만약 해당 인덱스의 visited가 False면 dfs를 실행하고, 트리가 끝나면 answer을 1 더해준다.
dfs 함수를 실행하면 visited를 True로 바꾸어준다.
그리고 안에 있는 리스트 인덱스를 봐서 연결된 컴퓨터일때 (i≠com and computers[com][i] ==1), visited가 False면 dfs를 반복해 재귀로 풀어준다.
DFS/BFS를 연습하고 있지만, 아직 조금 어려워서 많은 연습이 필요할 것 같다.