Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Joon's Space

[Python] 백준 알고리즘 #2606 바이러스 본문

Algorithm/baekjoon

[Python] 백준 알고리즘 #2606 바이러스

Happy Joon 2021. 2. 28. 20:39

문제풀이

 

그래프 문제는 먼저, 노드와, 간선의 정보를 모두 저장해준다. 이 문제 해결법은 그래프의 1 컴퓨터 노드에서 탐색을 시작했을 때, 1을 제외한 방문했던 노드수를 count 해준다.

 

노드 간의 탐색은 dfs, bfs 둘 중 dfs를 사용하였다. 

 

소스코드

 

import sys

input = sys.stdin.readline

T = int(input())
L = int(input())

road = [[0] * (T+1) for i in range(T)]
visited = [0 for i in range(T)]
for i in range(L):
    a,b = map(int, input().split()) #연결할 노드 2개를 입력
    road[a-1][b-1]=1 #양방향 으로 모두 갈수 있기 때문에 양방향 둘 다 1로 저장한다. 
    road[b-1][a-1]=1

def dfs(v):
    visited[v]=1
    for i in range(T):
        if road[v][i] == 1 and visited[i] == 0: #길이 있고 방문하지 않았다면
            dfs(i)
dfs(0) #1번 컴퓨터에서 탐색시작
count = 0
for i in range(1,T):
    if visited[i]==1:
        count+=1
print(count)

www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net

 

반응형