본문 바로가기

알고리즘/프로그래머스(Python)

dfs, bfs - 네트워크 / 파이썬

dfs 풀이

def solution(n, computers):
    visit = [0] * n
    def dfs(com):
        visit[com] = 1
        for idx, num in enumerate(computers[com]):
            if idx == com or visit[idx] or num == 0: continue
            dfs(idx)
    answer = 0
    for i in range(n):
        if visit[i] == 0:
            dfs(i)
            answer += 1
    return answer

 

bfs 풀이

from collections import deque

def solution(n, computers):
    answer = 0
    visit = [0] * n
    for i in range(n):
        if visit[i]: continue
        q = deque()
        q.append(i)
        while q:
            cur = q.popleft()
            visit[cur] = 1
            for idx, val in enumerate(computers[cur]):
                if visit[idx] or val == 0 or idx == cur: continue
                q.append(idx)
        answer += 1
    return answer

 

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

 

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

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

programmers.co.kr