https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3
문제는 간단한 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
'Archived(CSE Programming) > 알고리즘(Python)' 카테고리의 다른 글
효율적인 화폐 구성 (파이썬) / DP(다이나믹 프로그래밍) (2) | 2020.10.07 |
---|---|
떡볶이 떡 만들기(파이썬) / 이진탐색 (0) | 2020.10.06 |
미로탈출(파이썬) / 탐색(BFS) (0) | 2020.10.04 |
음료수 얼려먹기(파이썬) / 탐색(DFS) (0) | 2020.10.04 |
프로그래머스 - 구명보트(파이썬, LV2) / 그리디(Greedy) (0) | 2020.10.03 |