Algorithm/Programmers

[DFS] 프로그래머스 Lv3. 네트워크 - Python

jyjyjy25 2024. 5. 15. 01:30

🗂️ 문제

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

 

프로그래머스

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

programmers.co.kr

 

💡 접근법

노드를 최대한으로 방문하면 하나의 네트워크가 형성된다. 해당 네트워크의 개수를 구하는 문제이다.

DFS를 통해 한 번 탐색을 시작할 때 최대한으로 탐색한다. 또한 visited 리스트를 사용하여 노드 방문 여부를 체크한다.

 

😎 내 코드

def solution(n, computers):
    answer = 0
    
    visited = [False] * n
    def DFS(v):
        visited[v] = True
        for i, c in enumerate(computers[v]):
            if c == 1 and not visited[i]: # 컴퓨터가 연결되어 있고, 방문한 적 없을 때
                DFS(i)
    
    for i in range(n):
        if not visited[i]:
            DFS(i)
            answer += 1
        
    return answer