[파이썬/Python/프로그래머스] DFS/BFS > 네트워크

SooYeon Yeon·2022년 3월 28일
0

파이썬/알고리즘

목록 보기
10/35
def solution(n, computers):
    answer = 0
    visited=[False for i in range(n)]
    for com in range(n):
        if visited[com]==False:
            dfs(n,computers,com,visited)
            answer+=1
            
    return answer
def dfs(n,computers,com,visited):
    visited[com]=True
    for i in range(n):
            if i!=com and computers[com][i]==1:
                if visited[i]==False:
                    dfs(n,computers,i,visited)

나는 DFS를 이용해서 풀었다.

visited로 체크를 한다.

처음 for문에서 바깥 리스트 인덱스를 본다. 만약 해당 인덱스의 visited가 False면 dfs를 실행하고, 트리가 끝나면 answer을 1 더해준다.

dfs 함수를 실행하면 visited를 True로 바꾸어준다.

그리고 안에 있는 리스트 인덱스를 봐서 연결된 컴퓨터일때 (i≠com and computers[com][i] ==1), visited가 False면 dfs를 반복해 재귀로 풀어준다.

DFS/BFS를 연습하고 있지만, 아직 조금 어려워서 많은 연습이 필요할 것 같다.

0개의 댓글