BFS(12)
-
영역 구하기 - 실버 1 (백준, bfs)
from collections import deque M, N, K = map(int, input().split()) graph = [[0]*N for _ in range(M)] def bfs(i, j): q = deque() q.append((i, j)) dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] cnt = 1 while q: y, x = q.popleft() for k in range(4): ny = y+dy[k] nx = x+dx[k] if (0
2023.01.13 -
게임맵 최단거리 - level2
from collections import deque def solution(maps): def bfs(y, x): q = deque() q.append((y,x)) maps[y][x] = 2 while q: y,x = q.popleft() for dx,dy in d: Y, X = y + dy, x + dx if 0
2023.01.06 -
섬의 개수 – 실버2
대각선 루트를 추가하면 되는 간단한 bfs 문제 import sys from collections import deque def bfs(y, x, land_map): q = deque() q.append((y, x)) land_map[y][x] = 0 while q: y, x = q.popleft() for dx, dy in d: X, Y = x + dx, y + dy if 0
2023.01.03 -
음식물 피하기 – 실버1
인덱스 에러로 고생한 문제, x,y를 그냥 순서대로 받아서 하면 됐는데 다른 bfs 문제처럼 x,y의 순서를 변경해서 넣어 고생했지만 풀었다. from collections import deque N, M, K = map(int, input().split()) road = [[0] * (M + 1) for _ in range(N + 1)] d = [(0, 1), (0, -1), (1, 0), (-1, 0)] for i in range(K): x, y = map(int, input().split()) road[x][y] = '#' def bfs(x, y): road[x][y] = 1 q = deque() q.append((x, y)) result = 1 while q: x, y = q.popleft() f..
2023.01.03 -
미로 탐색 – 실버 1
from collections import deque def bfs(y,x): queue = deque() queue.append((y,x)) while queue: y, x = queue.popleft() for dx, dy in d: X, Y = x+dx, y+dy if (0
2023.01.02 -
Bucket Brigade – 실버 4
BFS: 함수의 return 조건은 찾고자 하는 값을 찾았을 때이며 queue를 사용하여 모든 범위를 확인할 수 있기에 최단거리만이 아니라 넓이와 같은 문제에서도 사용할 수 있다. 1. Queue를 이용한다. 2. d=[(-1,0),(1,0),(0,-1),(0,1)]를 선언 해당 d를 반복문으로 더 했을 때 행렬의 범위를 벗어나는지 확인. 3. 해당 조건을 완수 혹은 탐색 값인 경우의 조건문 확인 후, 조건 완료 시 return, 탐색 값일 경우 전 값에 초기화 +1을 하여 거리를 작성해두자. * 외워야 할 포인트 q = deque() q.append((y, x)) graph[y][x] = 0 while q: # bfs에서는 queue를 사용하여 반복문을 이용해서 탐색을 한다. y, x = q.pople..
2023.01.02