본문 바로가기
알고리즘 & PS

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

by 다람이도토리 2021. 4. 28.

간단한 BFS 문제,  거의 처음으로 어떤 참고도 없이 BFS 문제를 완전 자력으로 풀었다. 와!

출처 : programmers.co.kr/learn/courses/30/lessons/43162

알고리즘

하나의 지점에서 시작해서, 닿을 수 있는 모든 네트워크를 큐에 넣는다.
큐에 남는게 없으면 visited가 모두 1이 아닐 때, 최초로 1이 아닌 애를 다시 찾아 탐사를 또 한다.
visited가 모두 1일때 answer가 끝.
(최초 방문 조건을 잊지 말자)

코드

from collections import deque
def bfs(visited, computers):
    answer = 1
    queue = deque()
    queue.append(0)
    visited[0] = 1
    while 0 in visited:
        if len(queue) == 0:
            answer += 1
            for i in range(len(visited)):
                if visited[i] == 0:
                    queue.append(i)
                    break            
        curr = queue.pop()
        visited[curr] = 1
        for i in range(0, len(visited)):
            if computers[curr][i] == 1 and curr != i and visited[i] != 1:
                queue.append(i)        
    return answer
def solution(n, computers):
    visited = [0 for _ in range(n)]
    answer = bfs(visited, computers)
    return answer