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