본문 바로가기

Coding test

[백준/2606/파이썬] 바이러스

소스코드

from collections import deque
N = int(input())
M = int(input())

queue = deque()
queue.append(1)
computer = []
visited = []

for _ in range(M):
  a, b = map(int,input().split())
  computer.append([a,b])

while (queue):
  virus = queue.popleft()
  if virus not in visited:
    visited.append(virus)
    for i in range (M):
      if virus == computer[i][0]:
        queue.append(computer[i][1])
      elif virus == computer[i][1]:
        queue.append(computer[i][0])
print(len(visited)-1)

알고리즘

DFS BFS 문제를 풀다보니 어느정도 감이 잡힌듯 하네요

이번 문제는 되게 쉬워던게 1번 컴퓨터에 대해 알고리즘을 작성하면 되는데요

1. 네트워크가 이어진 컴퓨터들의 입력을 받습니다.

2. 큐를 생성하여서 안에 1번 컴퓨터부터 시작해 바이러스를 시작합니다.

3. 반복문을 돌며 방문하지 않은 컴퓨터에 대해 visited 리스트에 넣습니다.

4. 마지막에 visited의 모습이고 여기에는 1이 들어가 있었으니 문제에서 요구한건

1번 컴퓨터가 감염시킨 다른 컴퓨터 개수니 마지막에 -1 을 해주면 됩니다.