코딩 테스트/Baekjoon

S3 2606. 바이러스

  • -
728x90

  • 정답률 : 46%


def dfs(graph,start,visited): visited[start]=True answer = 1 for node in graph[start]: if not visited[node]: answer += dfs(graph,node,visited) return answer T = int(input()) n = int(input()) graph = {i+1:[] for i in range(T)} for _ in range(n): n1,n2 = map(int,input().split()) graph[n1].append(n2) graph[n2].append(n1) visited = [False]*(T+1) print(dfs(graph,1,visited)-1)

연결된 노드(컴퓨터)를 찾아야 하기에 dfs 알고리즘을 사용했고, 연결된 노드의 번호가 아닌 노드의 갯수를 구해야하기 때문에 
함수 안에 answer라는 변수를 두었다. 

그리고 단순 '연결'이기 때문에  graph[n1].append(n2) & graph[n2].append(n1)로 딕셔너리에 앞 뒤 값을 모두 append했다. 

또 visited는 False/True로 두어 방문 여부를 확인하도록 했다.

320x100

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.