[프로그래머스] Python 네트워크 Level3 - DFS/BFS

swb·2022년 11월 11일

프로그래머스

목록 보기
4/23

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

접근

  1. 전형적인 방향없는 그래프 문제이다.
  2. BFS로 간단히 풀면 된다.

슈도코드

컴퓨터의 개수만큼 visited배열 만들고
컴퓨터를 하나씩 돌면서 방문한적 없고 1이면 
BFS()
  q에 시작값 삽입
  시작값 방문처리
  
  while q:
    q에서 팝
    
    for 컴퓨터 개수
      방문한적 없거나 연결된 컴퓨터가 있으면
        방문처리
        q삽입

풀이

def BFS(start, visited, computers):
    q = []
    q.append(start)
    visited[start] = 1

    while q:
        v = q.pop()

        for i in range(len(computers[0])):
            if computers[v][i] == 1 and visited[i] == 0:
                visited[i] = 1
                q.append(i)

def solution(n, computers):
    connected = 0
    visited = [0] * len(computers[0])

    for i in range(len(computers[0])):
        for j in range(len(computers[0])):
            if visited[j] == 0 and computers[i][j] == 1:
                BFS(i, visited, computers)
                connected += 1
                
    return connected
profile
개발 시작

0개의 댓글