[Python] 프로그래머스 - 네트워크

728x90
반응형

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

 

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

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

programmers.co.kr

BFS문제이다.

 

from collections import deque
def solution(n, computers):
    cnt = 0
    visited = [False] * (n+1)
    graph = [[] for _ in range(n)]
    q = deque()
    # 연결되어 있는 컴퓨터 graph에 저장
    for i in range(n):
        for j in range(n):
            if computers[i][j]:
                graph[i].append(j)
            
    for i in graph:
        # bfs를 돌며 연결된 네트워크 개수 cnt를 세줌
        for j in i:
            if not visited[j]:
                cnt += 1
                q.append(j)
                visited[j] = True
                while q:
                    x = q.popleft()
                    for k in graph[x]:
                        if not visited[k]:
                            q.append(k)
                            visited[k] = True
    return cnt

 

(프로그래머스 level: 3)

 

 

728x90
반응형
TAGS.

Comments