프로그래머스 네트워크

wook2·2021년 6월 25일
0

알고리즘

목록 보기
7/117

https://programmers.co.kr/learn/courses/30/lessons/43162

백준에 있는 dfs/bfs문제들중 영역 개수를 구하는 문제들이 있는데 그와 유사한 방식으로 해결하였다.

그래프를 dfs방식으로 탐색하면서 방문자 배열을 변경하였고, 새 정점으로부터 출발하면 정답개수를 하나씩 추가하였다.

def solution(n, computers):
    visited = [0] * (n+1)
    stack = []
    graph = [[] for i in range(n+1)]
    answer = 0
    for i in range(n):
        for j in range(n):
            if i != j and computers[i][j] == 1:
                graph[i+1].append(j+1)
    for i in range(1,n+1):
        if not visited[i]:
            visited[i] = 1
            answer += 1
            stack.append(i)
            while stack:
                k = stack.pop()
                for j in graph[k]:
                    if not visited[j]:
                        visited[j] = 1
                        stack.append(j)

    return answer
profile
꾸준히 공부하자

0개의 댓글