BFS_시작점이 여러개


시작점이 여러개인 BFS

  • 시작점이 여러개인 BFS탐색의 대표적으로 가스가 퍼지는 상황이 있다.
  • 이 경우, 배열에 대해 완전 탐색을 하고, visited에 넣어 주는 값을 조금만 바꿔 주면 된다.

코드

def bfs(N, M):          # 여러개의 시작점을 갖는 bfs, 시작점에서의 거리를 탐색하며 알아냄
    for i in range(N):
        for j in range(M):
            if tomato[i][j] == 1:
                Q.append((i, j))

    while Q:
        i, j = Q.popleft()
        for di, dj in [[0, 1], [1, 0], [-1, 0], [0, -1]]:
            nr, nc = i + di, j + dj
            if 0 <= nr < N and 0 <= nc < M:
                if tomato[nr][nc] == 0 and visited[nr][nc] == 0:
                    Q.append((nr, nc))
                    visited[nr][nc] = visited[i][j] + 1

'알고리즘 개념' 카테고리의 다른 글

N-Queen  (0) 2022.09.27
분할정복 병합정렬 (파이썬)  (0) 2022.09.26
Queue 큐 (파이썬)  (0) 2022.09.03
DFS (깊이 우선 탐색) (파이썬)  (0) 2022.09.03
BFS 너비우선탐색 (파이썬)  (0) 2022.09.02
복사했습니다!