[백준] 2606번 : 바이러스 (파이썬)
문제
나의 답안
n=int(input())
m=int(input())
g=[[] for i in range(n+1)]#n+1개의 노드를 갖는 그래프 생성
for i in range(m):
a,b=map(int,input().split())
g[a].append(b)#a노드에 b연결
g[b].append(a)#b노드에 a연결
visited=[0]*(n+1) #방문한 노드 저장, 방문했으면 1로 변경
def dfs(n):
visited[n]=1
for i in g[n]:
if visited[i]==0:#방문하지 않았다면
dfs(i)#방문처리
return sum(visited)#방문한 노드 수(1의 개수)
print(dfs(1)-1)#1번을 제외한 컴퓨터 수
접근 방법
- 1번 컴퓨터부터 접근하므로 n+1개의 노드를 갖는 그래프를 생성한다.
- 이후 반복문을 통해 각 쌍을 연결하는 간선을 생성해준다.
- 방문한 노드는 1로 저장하고, 아닌 노드는 0으로 간주한다.
- dfs 함수에선 방문한 노드인지 판별해주고, 방문한 노드의 수를 반환해준다.
- 감염된 컴퓨터의 개수에선 1은 포함되지 않으므로 -1을 해준다.
Author And Source
이 문제에 관하여([백준] 2606번 : 바이러스 (파이썬)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yj_lee/백준-2606번-바이러스-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)