미소를뿌리는감자의 코딩

[백준 2024/02/15] 2606번 바이러스 본문

코딩 테스트/백준

[백준 2024/02/15] 2606번 바이러스

미뿌감 2024. 2. 15. 19:31
728x90

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

 

2606번: 바이러스

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

www.acmicpc.net

 

1. 접근 방법

이번 문제는 1번 노드와 연결된 노드의 개수를 구하는 문제이다.

 

dfs 함수에다가 set을 넘겨주고 set에 노드를 추가하는 식으로 진행했다.

만약 새로운 노드에 접근 했다면, 해당 노드에 대해서 새로운 노드들을 접근해 나가는 식으로 코드를 진행했다. 

또한 새로운 노드를 set에다가 add 해주는 것도 잊지 않았다.

 

최종적으로는 visited를 return 해주어, 여태까지 접근 했던 노드들을 되돌려주었다.

 

2. 코드

from collections import defaultdict

comp = int(input())
edges = int(input())

list_node = defaultdict(list)

nodes = []

for i in range(edges):
    start, end = map(int, input().split())
    list_node[start].append(end)
    list_node[end].append(start)


def dfs(node, visited):
    if node not in visited:
        visited.add(node)
        for neighbor in list_node[node]:
            dfs(neighbor, visited)
    return visited

if 1 not in list_node:
    print(0)
else:
    visited = dfs(1, set())
    print(len(visited)-1)

728x90