네트워크와 DFS

hyowon·2023년 9월 12일

CodeInterview

목록 보기
6/10

역시 코테는 암기다.

연결된 노드는 하나로 세고, 그렇지 않은 노드들은 각각을 세주면 되는 문제.

n = 3
computers = [[1, 1, 0], [1, 1, 0], [0, 0, 1]]
answer = 2

내 코드

def solution(n, computers):
    answer = 0
    
    visited = [False] * n

    for i, computer in enumerate(computers): 
        stack = [computer]
        
        if visited[i] == False:
            while stack:
                cur_node = None

                for i, com in enumerate(stack[-1]):
                    if visited[i] == False and com == 1:
                        cur_node = i
                        break

                if cur_node == None:
                    stack.pop()

                else:
                    stack.append(computers[cur_node])
                    visited[cur_node] = True
            answer += 1
    
    return answer

stack을 다 돌면서 연결된 노드를 순회한다. 그리고 stack이 없어지면 다른 별개의 네트워크를 찾는다.

나름 쉽게 풀었던 DFS 문제였다.

profile
인생을 즐겁게

0개의 댓글