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

JinUk Lee·2023년 2월 27일
0

프로그래머스

목록 보기
19/48

def dfs(visited,x,n,graph):
    visited[x] = True
    for k in graph[x]:
        if not visited[k]:
            dfs(visited,k,n,graph)


def solution(n, computers):
    graph = [[] for _ in range(n+1)]
    ans_vis = []
    for i in range(n):
        for j in range(n):
            if i!=j and computers[i][j]==1:
                if j+1 not in graph[i+1]:
                    graph[i+1].append(j+1)
                if i+1 not in graph[j+1]:
                    graph[j+1].append(i+1)


    for i in range(1,n+1):
        visited=[False]*(n+1)
        dfs(visited,i,n,graph)
        if visited not in ans_vis:
            ans_vis.append(visited)


    answer = len(ans_vis)

    print(answer)

    return answer

기본적인 1차원 DFS 문제였는데 문제에서 주어진 input을 1차원 DFS 문제에서 사용하기 좋게 바꾸는 것이 중요했던 문제인 것 같다.

profile
개발자 지망생

0개의 댓글