[Python3]프로그래머스_네트워크

Beanzinu·2022년 1월 19일

코딩테스트

목록 보기
5/42

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

접근법

어제 풀었던 문제와 유사한 문제였다.
직접 연결, 간접 연결된 컴퓨터들을 하나의 네트워크로 생각하기 때문에 바로 DFS를 떠올렸다.

  • 방문한 컴퓨터는 이미 정답에 추가된 네트워크이다.
    예) 1 - 3 - 5 가 연결되어 있다면 1번 컴퓨터는 3번,5번 컴퓨터를 거쳐 연결됨을 확인했기 때문에 3번 , 5번 컴퓨터는 더이상의 네트워크 확인이 필요없다.
  • 처음 DFS를 호출할 때에만 정답에 추가 ( 서로 다른 네트워크임이 명확 )

코드

b = [ 0 ] * 200
num , comp = 0,0
def dfs(i):
    global comp,num,b
    b[i] = 1
    for j in range(num):
        if( comp[i][j] and b[j] == 0 ):
            dfs(j)
    
def solution(n, computers):
    global comp,num,b
    comp,num = computers , n
    answer = 0
    for j in range(n):
        if( b[j] == 0 ):
            answer += 1
            dfs(j) # 네트워크 시작
    return answer
profile
당신을 한 줄로 소개해보세요.

0개의 댓글