프로그래머스. 네트워크 파이썬 풀이

minan·2021년 7월 1일
0

프로그래머스

목록 보기
88/92

프로그래머스. Level 3. 네트워크 파이썬 풀이

문제링크 https://programmers.co.kr/learn/courses/30/lessons/43162

위의 예제 1에 대하여 아래 코드 적용
1번에 대하여 bfs를 실행하였다면 1,2번이 방문처리 되고 네트워크 수를 1 늘린다..
2번에 대하여 bfs를 실행하였지만 이미 방문된 컴퓨터이기 때문에 넘어가고
3번에 대하여 bfs를 실행한다면 방문되지 않은 컴퓨터이기 때문에 네트워크 수를 1 늘린다.

from collections import deque

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

                
    def bfs(start):
        queue = deque([start])
        
        if visited[start] == False:
            pass
        else:
            return 0
        
        visited[start] = True
        
        while queue:
            v = queue.popleft()
            for i in graph[v]:
                if not visited[i]:
                    queue.append(i)
                    visited[i] = True
        
        return 1
                
    for i in range(1, n+1):
        answer += bfs(i)
    
    return answer
profile
https://github.com/minhaaan

0개의 댓글