deo2kim
맞왜틀
deo2kim
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
deo2kim

맞왜틀

[python] 백준 - 2606. 바이러스
Algorithm Problem/Python

[python] 백준 - 2606. 바이러스

2020. 6. 1. 23:55
반응형

문제 해결

1. 플로이드와샬 알고리즘 - 가중 그래프에서 최단 경로들을 찾는 알고리즘이다.

2. 라고 되어있지만 사실 잘 모르겠고, 이어져있는 정점들을 모두 찾는 문제이다.

3. 인접리스트를 만들고, BFS로 이어져있는 모든 정점을 찾으면 해결되는 간단한 문제!

 

소스 코드

from _collections import deque


def bfs(vertex):

    # 속도가 빠른 디큐를 사용해서 BFS 탐색
    q = deque()
    q.append(vertex)
    # 시작점 방문 체크를 True로 해준다음
    visit[vertex] = True
    while q:
        # 큐에 쌓인 노드들 중에서 하나를 꺼내고
        current = q.popleft()
        # 노드에 인접한 이웃들중
        for neighbor in adj[current]:
            # 방문하지 않은 노드를
            if visit[neighbor] is False:
                # q에 쌓고, 방문 체크를 True로 해준다.
                q.append(neighbor)
                visit[neighbor] = True
    return


n = int(input())
m = int(input())
adj = [[] for _ in range(n+1)]

# 인접 리스트 생성 | 방향없는 그래프
for _ in range(m):
    a, b = map(int, input().split())
    adj[a].append(b)
    adj[b].append(a)

# 방문 배열 사용
visit = [False]*(n+1)
cnt = 0

# 1번부터 시작
bfs(1)

# 결과는 visit 배열에 True의 갯수를 세준다.
print(visit.count(True)-1)

 

출처: BACKJOON ONLINE JUDGE

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

 

2606번: 바이러스

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

www.acmicpc.net

신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.

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

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

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

반응형
저작자표시 비영리 변경금지

'Algorithm Problem > Python' 카테고리의 다른 글

[python] 백준 - 16236. 아기 상어 (삼성 SW 역량 테스트 기출 문제)  (2) 2020.06.03
[python] 백준 - 4963. 섬의 개수  (2) 2020.06.02
[python] 백준 - 15683. 감시  (0) 2020.05.29
[python] 백준 - 15684. 사다리 조작  (0) 2020.05.28
[python] 백준 - 1753. 최단경로  (0) 2020.05.27
    'Algorithm Problem/Python' 카테고리의 다른 글
    • [python] 백준 - 16236. 아기 상어 (삼성 SW 역량 테스트 기출 문제)
    • [python] 백준 - 4963. 섬의 개수
    • [python] 백준 - 15683. 감시
    • [python] 백준 - 15684. 사다리 조작
    deo2kim
    deo2kim
    코딩 기록하기

    티스토리툴바