Baekjoon

[BOJ / 백준] 2606번 바이러스 파이썬(Python) 문제 풀이

728x90

문제

 

문제 링크 : https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net

 

 

 

 

CODE

from collections import deque
import sys

input = sys.stdin.readline

v = int(input())
e = int(input())
edges = [[] for _ in range(v + 1)]
for _ in range(e):
    a, b = map(int, input().split())
    edges[a].append(b)
    edges[b].append(a)

q = deque([1])
visited = [False] * (v + 1)
visited[1] = True

while q:
    now = q.popleft()

    for e in edges[now]:
        if not visited[e]:
            q.append(e)
            visited[e] = True

print(visited[2:].count(True))

 

 

 

 

 

풀이

💡 idea

- 1번 컴퓨터와 연결된 모든 컴퓨터를 완전탐색

- DFS / BFS

- 저는 BFS 문제를 연속으로 풀어서 BFS 풀이가 먼저 생각났기에 BFS로 코드를 작성했습니다 🙋‍♀️

 

 

💡 implementation

- 1번 컴퓨터를 제외한 컴퓨터들 중 방문한 컴퓨터를 count하여 결과로 출력

print(visited[2:].count(True))

 

 

 

 

 

 

결과

 

 

 

 

 

 

728x90