2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어��
www.acmicpc.net
<내 코드>
N = int(input())
P = int(input())
# 인덱스 번호 맞추기 위해 한 줄 추가
graph = [[0]*(N+1) for _ in range(N+1)]
done = []
for _ in range(P):
x, y = map(int, input().split())
graph[x][y], graph[y][x] = 1, 1
def dfs(v):
done.append(v)
for k in range(1, N+1): # 1 ~ n번까지
if (k not in done) and (graph[v][k] == 1):
dfs(k)
return (len(done) - 1) # 1번을 제외한 컴퓨터 수
print(dfs(1))
문제 자체는 DFS를 구현한다면 어렵지 않았다. 아직은 DFS를 자유롭게 구현하는게 힘들다...이 문제에서 인접행렬 방식을 이용해 DFS를 구현했다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 1012] 유기농 배추 - Python (그래프, DFS) (0) | 2020.08.31 |
---|---|
[백준 11724] 연결 요소의 개수 - Python (그래프탐색, DFS) (0) | 2020.08.31 |
[백준 2178] 미로 탐색 - Python(BFS, 그래프 탐색) (0) | 2020.08.30 |
[백준 1260] DFS와 BFS - Python (그래프 탐색) (0) | 2020.08.30 |
[백준 1783] 병든 나이트 - Python (그리디 알고리즘) (0) | 2020.08.28 |