haju__log

[python][백준/BOJ] 2606번 : 바이러스 -DFS 본문

BOJ_백준/DFS_BFS

[python][백준/BOJ] 2606번 : 바이러스 -DFS

haju 2023. 9. 17. 02:01
반응형

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍

www.acmicpc.net

 

문제풀이

  • 다른 부분에선 막히는 게 없었는데 dfs를 수행하여 방문처리하는 노드의 수를 어떻게 셀 것인가에 대해 고민을 꽤 했다.
  • global 전역변수를 사용하여 그 문제를 쉽게 해결할 수 있었다. 
import sys

result=0
def dfs(v):
    #result를 전역변수로 사용함 (global 사용하여)
    global result
    visited[v]=1
    result += 1
    for i in range(1,n+1):
        if graph[v][i]==1 and visited[i]==0:
            dfs(i)

n=int(sys.stdin.readline())
m=int(sys.stdin.readline())

graph=[[0]*(n+1) for _ in range(n+1)]
for i in range(m):
    a,b=map(int,sys.stdin.readline().split())
    graph[a][b]=1
    graph[b][a]=1

visited=[0]*(n+1)
dfs(1)

print(result-1)
반응형