갬쿠
개미 개발
갬쿠
전체 방문자
오늘
어제
  • ALL (137)
    • React (20)
    • JS & CSS & HTML (29)
    • Algorithm (62)
    • 웹 보안 (11)
    • 달리는 까까: 쿠키런 팬게임 (10)
    • Python (0)
    • 기타 (5)
    • 비공개 플젝 (0)

블로그 메뉴

  • GitHub
  • 방명록
  • 관리자 메뉴

공지사항

인기 글

태그

  • js
  • 크롬 공룡 게임
  • 게임 개발
  • 쿠키런 모작
  • useReducer
  • 게임
  • Object
  • 달리는 까까
  • 객체
  • Programmers
  • Baekjoon
  • EventListener
  • 리액트
  • 백준
  • 모의 해킹
  • 크롬 공룡게임
  • node.js
  • 쿠키런
  • SQL Injection
  • useState
  • Best of the Best
  • HTML
  • Python
  • BEAKJOON
  • useEffect
  • JavaScript
  • REACT
  • transform
  • 쿠키런 팬게임
  • CSS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갬쿠

개미 개발

[2606] 바이러스 - Python
Algorithm

[2606] 바이러스 - Python

2023. 2. 16. 20:01
/* 문제 */
신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.
예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다.

어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.

그래프를 순회하는 문제다. BFS와 DFS 중 하나를 선택하면 되는데, 두 방식은 조건 내의 모든 노드를 검색한다는 점에서 시간 복잡도가 동일하다. 나는 DFS를 사용했다.

# 정답 코드

import sys
sys.setrecursionlimit(10**9)
input = sys.stdin.readline

def dfs(graph, v, visited):
    global cnt
    visited[v] = True
    cnt += 1
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)

n = int(input())
m = int(input())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
cnt = 0
for _ in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)

dfs(graph, 1, visited)
print(cnt - 1)

 1번 컴퓨터를 통해 바이러스에 걸리게 되는 컴퓨터의 수이므로 1번 컴퓨터를 뺀 cnt - 1을 출력해준다.

728x90

'Algorithm' 카테고리의 다른 글

[2667] 단지번호붙이기 - Python  (0) 2023.02.16
[1260] DFS와 BFS - Python  (0) 2023.02.16
[24444] 알고리즘 수업 - 너비 우선 탐색 1 - Python  (0) 2023.02.16
[24480] 알고리즘 수업 - 깊이 우선 탐색 2 - Python  (0) 2023.02.16
[24479] 알고리즘 수업 - 깊이 우선 탐색 1 - Python  (0) 2023.02.16
    'Algorithm' 카테고리의 다른 글
    • [2667] 단지번호붙이기 - Python
    • [1260] DFS와 BFS - Python
    • [24444] 알고리즘 수업 - 너비 우선 탐색 1 - Python
    • [24480] 알고리즘 수업 - 깊이 우선 탐색 2 - Python
    갬쿠
    갬쿠
    보안&소프트웨어 전공 프론트엔드 개발자

    티스토리툴바