DFS/BFS 문제인데 queue로 푸는게 먼저 생각이 나서 BFS로 풀고 다른 분들의 DFS 분들의 코드를 참고하여 DFS로도 풀어봤다
1) BFS
from collections import deque
def solution(n, computers):
answer = 0
visited = [0]*n
def bfs(i):
q = deque([i])
visited[i] = 1
while q:
now = q.popleft()
for j in range(n):
if computers[now][j] and not visited[j]:
visited[j]=1
q.append(j)
for i in range(n):
if not visited[i]:
bfs(i)
answer += 1
return answer
2) DFS
def solution(n, computers):
answer = 0
visited = [0]*n
def dfs(i):
visited[i] = 1
for j in range(n):
if computers[i][j] and not visited[j]:
dfs(j)
for i in range(n):
if not visited[i]:
dfs(i)
answer += 1
return answer
코드는 DFS가 간결하지만, 문제를 이해하고 풀기에는 BFS가 더 쉬운 것 같다
BFS를 DFS로 리팩토링하는 습관을 들이면 조금이나마 DFS가 쉬워지려나..?