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 |
댓글