프로그래머스 - 네트워크

이숭인·2021년 8월 1일
0

알고리즘 문제풀이

목록 보기
14/17

문제

핵심

  • 기본 BFS/DFS 탐색 문제

  • 연결되어 있는 네트워크의 개수를 return

문제 풀이

  • 서로 다른 네트워크들의 개수를 구하는 방법을 찾는게 중요

  • 탐색 시작 노드로 첫번째 노드를 기준으로 잡기

  • 기준 노드와 연결되어 있는 노드들을 탐색 후, answer += 1

  • 이후 방문되지 않은 노드들이 아직 존재한다면 위의 과정을 반복

  • 결과적으로 한번 기준 노드들과 직접, 간접적으로 연결되어 있는 노드들까지의 탐색이 완료되었을때의 상태가 하나의 네트워크를 찾은 상태라고 생각하면 됨

풀이 코드

from collections import deque

def solution(n, computers):
    answer = 0
    visited = [False for _ in range(n)]
    queue = deque()
    
    for node in range(n):
        if visited[node] == False:
            visited[node] = True
            queue.append(node)
            
            while queue:
                item = queue.popleft()
                visited[item] = True
                # 자신을 가리키는건 제외
                for element in range(n):
                    if item != element and computers[item][element] == 1:
                        if visited[element] == False: # 방문하지 않았다면,
                            queue.append(element)
            answer += 1
            
    return answer

참조

timointhebush의 velog

profile
iOS Developer

0개의 댓글