Algorithm (PS)

프로그래머스 - 네트워크 Python (DFS풀이)

minjiwoo 2022. 11. 18. 19:52
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/43162

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

네트워크 덩어리를 찾을 때마다 dfs가 실행되고 그래프 탐색이 종료되면 그 네트워크 덩어리의 탐색이 끝났다는 것이다.

즉, dfs가 몇번 실행되는지 카운트 해주면 된다. 

생각할 점은 인접그래프 형태로 computers 2차원 배열이 주어진다는 것이다. 

def solution(n, computers):
    answer = 0
    visited = [False] * n
    
    def dfs(start):
        visited[start] = True 
        for i in range(n):
            if visited[i] == False and computers[start][i] == 1: 
                dfs(i)
                
    for start in range(n):
        if visited[start] == False:
            dfs(start)
            answer += 1
    return answer
728x90