/ ALGORITHM

프로그래머스 - 네트워크

image-20230110001636685

#DFS를 이용한 풀이
def dfs(v,visited,graph):
    for i in graph[v]:
        if not visited[i]:
            visited[i]=True
            dfs(i,visited,graph)

def solution(n, computers):
    answer = 0
    graph = [[] for _ in range(n)]
    visited = [False] * n
    
    for i in range(n):
        for j in range(n):
            if computers[i][j]:
                graph[i].append(j)
            
    for i in range(n):
        if not visited[i]:
            visited[i]=True
            dfs(i,visited,graph)
            answer+=1
            
    return answer
#BFS를 이용한 풀이
from collections import deque

def bfs(v,visited,graph):
    queue = deque([v])
    while queue:
        node = queue.popleft()
        for i in graph[node]:
            if not visited[i]:
                visited[i]=True
                queue.append(i)
        
def solution(n, computers):
    graph = [[] for _ in range(n)]
    for i in range(n):
        for j in range(n):
            if computers[i][j]:
                graph[i].append(j)
                
    visited = [False] * n
    answer = 0
    
    for i in range(n):
        if not visited[i]:
            visited[i]=True
            bfs(i,visited,graph)
            answer+=1
                
    return answer