백준 : 바이러스 - 2606

2025. 9. 26. 23:45·알고리즘
반응형

입력

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

출력

1번 컴퓨터가 웜 바이러스에 걸렸을 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 첫째 줄에 출력한다.

 

예제 입력 1 

7
6
1 2
2 3
1 5
5 2
5 6
4 7

예제 출력 1 

4

 

from collections import deque
import sys


c_node = int(input())
c_edge = int(input())

# 인접 리스트, 1번부터 N번까지 사용하기 위해 N+1 크기로 초기화
graph = [[] for _ in range(c_node + 1)]

# 방문 여부를 체크하는 배열을 N+1 크기로 초기화
visited = [False] * (c_node+1)

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


def bfs(start_node):
    count = 0
    queue = deque([start_node])

    visited[start_node] = True

    while queue:
        v = queue.popleft()

        for i in graph[v]:
            if not visited[i]:
                visited[i] = True
                queue.append(i)
                count +=1

    return count

print(bfs(1))

주어진 코드는 너비 우선 탐색(BFS) 알고리즘을 사용하여 네트워크에서 바이러스에 감염되는 컴퓨터의 총 수를 계산하는 문제임.

 

BFS 함수는 탐색의 시작점인 1번 컴퓨터부터 시작하여 연결된 모든 컴퓨터를 순차적으로 방문해야 하고 방문하지 않은 새로운 컴퓨터를 발견할 때마다 count 변수를 하나씩 늘려 감염된 컴퓨터 수를 세는 것이 중요함.

큐에 더 이상 탐색할 컴퓨터가 남아있지 않으면 탐색을 종료하고, 1번 컴퓨터를 제외한 감염된 컴퓨터의 총수인 count 값을 반환하도록 하게 했다. 이때 입력 받는 값이 각 노드와 노드를 이어주는 것을 알려주기 위해서 각 그래프의 위치별로 서로 이어주도록 진행하였다.

반응형

'알고리즘' 카테고리의 다른 글

백준 : 다리 놓기 - 1010  (0) 2025.09.29
백준 : 유기농 배추 - 1012  (0) 2025.09.27
[이코테] : DFS/BFS (미로 탈출)  (3) 2025.09.26
[이코테] : DFS/BFS (음료수 얼려 먹기)  (0) 2025.09.26
DFS/BFS  (0) 2025.09.26
'알고리즘' 카테고리의 다른 글
  • 백준 : 다리 놓기 - 1010
  • 백준 : 유기농 배추 - 1012
  • [이코테] : DFS/BFS (미로 탈출)
  • [이코테] : DFS/BFS (음료수 얼려 먹기)
Feel나는 대로 GI록하는 글
Feel나는 대로 GI록하는 글
세상을 위한 개발자가 되기 위하여
    반응형
  • Feel나는 대로 GI록하는 글
    FeelGI
    Feel나는 대로 GI록하는 글
  • 전체
    오늘
    어제
    • 분류 전체보기 (59) N
      • ML & AI (3)
        • 논문 리뷰 (1)
        • Computer Vision (0)
        • Digital Image Processing (1)
      • 알고리즘 (47) N
      • 프로그램(대회,공모전,프로그램) (2)
      • 도서 (0)
      • 필기록 (1)
        • 회고록 (0)
        • 끄적끄적 (1)
      • 취업 준비 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    28702
    LG Aimers
    ICT 학점연계 프로젝트 인턴십
    코드트리 #코딩테스트 #코테공부 #내가 학습한 알고리즘 유형(예시: #DP #이진탐색 등) #알고리즘 기초
    #코드트리 #코딩테스트 #코테공부 #코테준비 #알고리즘공부 #갭체크
    백준
    IT대학생
    백준 토마토
    DP #알고리즘 #백준 #Python
    LG AI
    FizzBuzz
    구현 #문자열 #백준 #python
    스택 수열
    백준 토마토 7576
    파이썬
    알고리즘
    동적계획
    코테
    코딩테스트
    14761
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Feel나는 대로 GI록하는 글
백준 : 바이러스 - 2606
상단으로

티스토리툴바