[프로그래머스 | Python] 네트워크

게으른 완벽주의자·2023년 2월 2일
0

프로그래머스

목록 보기
36/83
post-custom-banner

프로그래머스_네트워크

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가 쉬워지려나..?

profile
데이터를 공부하고 있습니다
post-custom-banner

0개의 댓글