본문 바로가기
프로그래머스

프로그래머스_네트워크

by 집못가는프로그래머 2021. 9. 10.

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

 

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

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

programmers.co.kr

 

 Code

from collections import deque

def solution(n, computers):
    
    check_network = [False for _ in range(n)]
    answer = 0

    def bfs(index) :
        
        queue = deque()
        queue.append(index)
        while queue :
            index = queue.popleft()
            check_network[index] = True

            for i in range(n) :
                if check_network[i] == False and computers[index][i] == 1 :
                    queue.append(i)

    for i in range(n) :
        if check_network[i] == False :
            bfs(i)
            answer += 1
    
    return answer

 

 Code 설명

- BFS (Breadth-First-Search)

- 0번 컴퓨터부터 n-1 컴퓨터까지 방문한 적이 없는 노드를 기준으로 BFS탐색을 시작한다

- 위 과정에서 탐색하는 컴퓨터에 대해 방문 기록을 check_network 리스트에 저장하여 재방문 하는일이 없도록 한다

- BFS탐색을 한번 끝낼때 마다 네트워크의 수를 저장하는 answer에 1을 누적한다

- 위 과정을 반복하면 최종적으로 네트워크의 수를 구할 수 있다

'프로그래머스' 카테고리의 다른 글

프로그래머스_N으로 표현  (0) 2021.09.16
프로그래머스_여행경로  (0) 2021.09.13
프로그래머스_카펫  (0) 2021.09.13
프로그래머스_단어변환  (0) 2021.09.10
프로그래머스_타겟넘버  (0) 2021.09.09

댓글