Archived(CSE Programming)/알고리즘(Python)
프로그래머스 - 네트워크(파이썬, LV3) / 탐색(DFS)
bale.yoon
2020. 10. 4. 20:41
https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있��
programmers.co.kr
문제는 간단한 DFS 문제이다.
LV3의 난이도가 아닌거 같은데 여튼, 섬 개수 찾기와 같은 유형의 문제이다.
DFS를 통해 방문할 수 있는 곳을 전부 방문하고 방문하지 않은 곳이 있으면 다시 DFS를 호출하면서
전체를 탐색할 동안 DFS를 몇 번 호출했는지를 찾으면 된다.
def solution(n, computers):
answer = 0
visit = [False] * n
def dfs(dst):
# 방문했던 곳이면 패스
if visit[dst] == True:
return
visit[dst] = True # 방문
# 연결된 곳 탐색
for i in range(n):
if dst != i and visit[i] == False and computers[dst][i] == 1 :
dfs(i)
# 방문
while True:
# 방문 안한 곳이 있으면 방문
if False in visit:
dfs(visit.index(False))
answer+=1
else:
break
return answer