본문 바로가기
Problem Solving/프로그래머스

[프로그래머스 programmers] 네트워크 문제풀이

by ggyongi 2021. 4. 16.
반응형

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

 

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

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

programmers.co.kr

dfs문제이므로 dfs로 접근하였다.

순차적으로 탐색하되 이미 탐색을 완료한 곳이면 즉시 탐색을 중단하고, 탐색하지 않은 곳이면 탐색 목록에 추가시키며 끝까지 탐색한다.

이후 solution 함수에서 탐색 목록에 없었던 곳을 탐색하였다면 그때마다 answer에 1을 더해준다.

answer = 0
def solution(n, computers):
    global answer
    discovered=[]
    
    def dfs(i):
        global answer
        if not i in discovered:
            discovered.append(i)
        else:
            return 
        
        for k in range(len(computers)):
            if i!=k and computers[i][k]==1: #linked
                dfs(k)
        
    
    for i in range(len(computers)):
        if i not in discovered:
            dfs(i)
            answer +=1
    return answer
 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글