728x90
반응형
2606번 바이러스 (DFS/BFS)1. 문제문제링크https://www.acmicpc.net/problem/2606 2. 풀이1) 예전에 풀었던 풀이 (DFS 이용)# 2606번. 바이러스n = int(input())m = int(input())adj = [[0]*(n+1) for _ in range(n+1)]visited = [0] * (n+1)global cntcnt = 0for i in range(m): x, y = map(int, input().split()) adj[x][y] = adj[y][x] = 1def dfs(v): visited[v] = 1 global cnt for i in range(n+1): if visited[i] == 0 and adj[..
DFS / BFS문제문제링크https://www.acmicpc.net/problem/2178 풀이원래 DFS로 풀려고 했다가, 최소 칸의 수를 구하려면 어떻게 해야 할지 모르겠어서 찾아봤다.그러나, DFS로 최소 이동 칸 수를 구하는 건 비효율적이라는 답을 얻었다.왜냐하면 DFS는 깊이 우선 탐색이라 한 방향으로 쭉 가다가 되돌아와야 할 때 너무 많은 경로를 탐색하게 되기 때문이다.이런 경우에는 BFS(너비 우선 탐색)이 훨씬 좋다고 한다.왜냐하면 BFS는 가까운 거리부터 탐색하기 때문에 먼저 도착하는 경로가 최단 거리가 되기 때문이다!그래서 BFS로 최소 이동 칸 수를 구했다. BFS 이용 풀이 큐(queue)를 사용해 탐색을 진행 (FIFO 방식)시작 위치에서 상하좌우 이동하면서 탐색방문한 곳은 다..