Pythonによるプログラミング解題(ネットワーク)


質問の概要


  • 符号化試験を準備するために、プログラマBFS/DFSの問題を再解答することは容易ではない.
  • は典型的なグラフおよびDFS問題である.
  • 解答方法

  • 配列を順に参照し、値が1の場合、ネットワーク数(答え)1を増やします.
  • 確認アクセスリスト
  • を作成し、初期に1が見つかったらアクセスチェックを行います.
  • DFSによって同じ行、すなわち、ノードが接続されている幹線(値1)が0に変更され、アクセスされていないノードがある場合、DFSナビゲーションが実行されて0に変更されます.
  • def dfs(i,computers,visited):
        visited[i]=1 # 방문체크한다.
        for j in range(len(computers[0])):
            if computers[i][j] == 1 : # 같은 행에 1이 있으면 
                computers[i][j] = 0 # 0으로 바꿔주고
                if visited[j] ==0: # 열부분이 방문하지 않았다면
                    dfs(j,computers,visited) # dfs 탐색
                    
                    
    def solution(n, computers):
        answer = 0
        visited = [0 for i in range(n)]
        for i in range(len(computers)):
            for j in range(len(computers[0])):
                if computers[i][j] == 1: #연결되어 있으면
                    dfs(i,computers,visited)
                    answer+=1 # 네트워크 수 증가
        return answer