-
17086 아기상어2코테 대비 python/백준 2023. 3. 7. 11:08
https://www.acmicpc.net/problem/17086
17086번: 아기 상어 2
첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만
www.acmicpc.net
from collections import deque n,m = map(int,input().split()) graph = [] for _ in range(n): graph.append(list(map(int,input().split()))) #상어 있는 곳에서 가장 가까운 상어까지 거리 구하면됨 #그 구한 거리중에서 가장 작은거 구하면됨 #상하좌우 상우 상좌 하우 하좌 dx=[-1,1,0,0,-1,-1,1,1] dy=[0,0,-1,1,-1,1,1,-1] q = deque() for i in range(n): for j in range(m): if graph[i][j] ==1: q.append((i,j)) def bfs(): global ans while q: x,y = q.popleft() for i in range(8): nx=x+dx[i] ny=y+dy[i] #safe+=1 #범위 안에 있고, 상어가 없다면 if 0<=nx<n and 0<=ny<m: if graph[nx][ny]==0: q.append((nx,ny)) graph[nx][ny] = graph[x][y]+1 ans = max(ans,graph[nx][ny]) ans=0 bfs() print(ans-1)
'코테 대비 python > 백준' 카테고리의 다른 글
14502 연구소 (0) 2023.03.07 1260 dfs bfs (0) 2023.03.07 1743 음식물 피하기 bfs (0) 2023.02.27 2583 영역 구하기 bfs (0) 2023.02.27 11279 최대 힙 (1) 2023.02.18