programmers - 네트워크(파이썬)

resilient

·

2021. 5. 13. 13:16

728x90
반응형

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

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

n = 3
computers = [[1, 1, 0], [1, 1, 1], [0, 1, 1]]



import sys
sys.setrecursionlimit(10000)

def solution(n, computers):
    visited = [False]*(n+1)
    graph = [[] for _ in range(n+1)]
    for i in range(len(computers)):
        for j in range(len(computers)):
            if i != j:
                if computers[i][j] == 1:
                    graph[i+1].append(j+1)
                    
    def dfs(start):
        visited[start] = True
        for i in graph[start]:
            if visited[i]==False:
                dfs(i)
    answer = 0
    for i in range(1,n+1):
        if visited[i] == False:
            dfs(i)
            answer += 1
    return answer

print(solution(n,computers))

dfs를 사용해서 연결되어있는 노드끼리가 끝나게 되면 카운트를 1씩 해주면서 답을 도출해냈다.

반응형