[백준 2606 파이썬] - 바이러스

zsunny·2022년 8월 1일
1

📌 문제

💯 정답

import sys
input = sys.stdin.readline

def dfs(graph, v, visit):
    visit[v] = 1
    for i in graph[v]:
        if visit[i] == 0:
            dfs(graph, i, visit)
    return True

n = int(input())    # 컴퓨터의 수
p = int(input())    # 연결 컴퓨터 쌍

# 인접 노드 그래프 생성
graph = [[] for _ in range(n+1)]
for _ in range(p):
    x, y = map(int, input().split())
    graph[x].append(y)
    graph[y].append(x)

visit = [0] * (n+1)     # 방문 체크

dfs(graph, 1, visit)
print(sum(visit) - 1)

📝 설명

• 우선 입력받은 값을 가지고 인접 노드 그래프를 생성하는 것이 가장 중요한 문제였다.
• 이후 방문을 체크하는 리스트를 만들어 1부터 시작하는 노드와 연결된 모든 노드를 방문처리한다.
• (방문 처리한 노드들의 총 합 - 1)을 하면 1을 제외한 1과 연결된 노드들의 수를 구할 수 있다.

🙏 참고

👉 [백준] 2606번 : 바이러스 / DFS / 파이썬 Python

profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글