본문 바로가기

프로그래머스

프로그래머스 LV 3 네트워크

728x90
def solution(n, computers):
    answer = 0
    visited = [False for _ in range(n)]
    for i in range(n) :
        if visited[i] == False :
            dfs(n,computers,visited,i)
            answer += 1
    return answer

def dfs(n,computers,visited,idx) :
    # 방문처리
    visited[idx] = True    
    for i in range(n) :
        # 다른 컴퓨터이자 연결된 컴퓨터
        if i != idx and computers[idx][i] == 1 :
            # 방문을 하지 않은 컴퓨터
            if not visited[i] :
                dfs(n,computers,visited,i)

풀이 및 회고

일단 따로 분리되어있는 네트워크 갯수를 세는 문제입니다.

1. 방문 배열을 만들어 False 로 초기화 합니다.

2. 컴퓨터를 순회하면서 방문하지 않은 컴퓨터에 탐색을 시작합니다.

3. 방문처리를 해주고 연결되어있는 컴퓨터면 그 컴퓨터에 대해 탐색을 시작합니다.

4. 다 끝나면 +1 을 해줍니다.

728x90