💡문제접근

  • 1번 컴퓨터부터 탐색을 시작해서 1번 컴퓨터와 연결된 컴퓨터들을 2차원 리스트를 통해 확인하면서 특정 컴퓨터에 처음 방문하게 된다면 이를 카운팅하여 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 계산하는 방식으로 코드를 작성했다. visualizer를 사용해도 코드의 흐름은 확실히 알기 어려운 것 같다.

💡코드(메모리 : 34104KB, 시간 : 68ms)

from collections import deque

import sys
input = sys.stdin.readline

N = int(input())
pair = int(input())
cnt = 0
# 2차원 배열 선언
computer = [[] for _ in range(N+1)]
for _ in range(pair):
    a, b = map(int, input().strip().split())
    computer[a].append(b)
    computer[b].append(a)

# 방문 여부
visited = [False] * (N+1)

def BFS(graph, v):
    global cnt
    queue = deque()
    queue.append(v)
    visited[v] = True
    while queue:
        v = queue.popleft()
        for i in graph[v]:
            if not visited[i]:
                visited[i] = True
                queue.append(i)
                BFS(graph, i)
                cnt += 1
    return cnt

print(BFS(computer, 1))

💡소요시간 : 9m

0개의 댓글