문제링크
https://www.acmicpc.net/problem/7576
여러 개의 익은 토마토로부터 시작하기 위해, 큐를 함수 밖에서 선언하고 큐 삽입을 선언한다.
정답 코드
import sys
from collections import deque
def bfs():
while queue:
x, y = queue.popleft()
for i in range(4):
pointX = x + dx[i]
pointY = y + dy[i]
if 0<=pointX<N and 0<=pointY<M:
if box[pointX][pointY] == -1:
continue
if box[pointX][pointY] == 0:
box[pointX][pointY] = box[x][y] + 1
queue.append([pointX,pointY])
return box
queue = deque()
M, N = map(int,sys.stdin.readline().split())
box = []
for i in range(N):
box.append(list(map(int,sys.stdin.readline().split())))
dx = [0,0,-1,1]
dy = [-1,1,0,0]
for i in range(N):
for j in range(M):
if box[i][j] == 1:
queue.append((i,j))
result = bfs()
for i in box:
for j in i:
if j == 0:
print(-1)
exit(0)
print(max(map(max,result))-1)
728x90
'파이썬 알고리즘 문제 풀이' 카테고리의 다른 글
Baekjoon Online Judge 2146번 파이썬 😩 (0) | 2022.08.24 |
---|---|
Baekjoon Online Judge 2178번 파이썬 (1) | 2022.08.22 |
Baekjoon Online Judge 4963번 파이썬 (0) | 2022.08.13 |
Baekjoon Online Judge 2667번 파이썬 (0) | 2022.08.08 |
Baekjoon Online Judge 9466번 파이썬 (0) | 2022.08.05 |