728x90
반응형
✏️ 문제
https://www.acmicpc.net/problem/7576
✏️ 풀이
BFS로 풀이한다.
from collections import deque
m,n=map(int,input().split())
#토마토를 받아서 넣기
matrix=[list(map(int, input().split())) for _ in range(n)]
queue=deque([])
#이동표현
dx,dy=[-1,1,0,0],[0,0,-1,1]
#정답을 담을 변수
res=0
#queue에 처음에 받은 토마토의 위치좌표를 담는다
for i in range(n):
for j in range(m):
if matrix[i][j]==1:
queue.append([i,j])
def bfs():
while queue:
x,y=queue.popleft()
for i in range(4):
nx,ny=dx[i]+x, dy[i]+y
#해당좌표가 좌표범위를 넘지않고 그 좌표에 안익은 토마토가 있어야한다.
if 0<=nx<n and 0<=ny<m and matrix[nx][ny]==0:
#익히고 1을 더하면서 횟수세기
matrix[nx][ny]=matrix[x][y]+1
queue.append([nx,ny])
bfs()
for i in matrix:
for j in i:
#안익은 토마토가 있으면 -1출력
if j==0:
print(-1)
exit(0)
#다익힌경우 최댓값이 정답
res=max(res,max(i))
print(res-1)
728x90
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
자바스크립트로 백준 풀이하기 (0) | 2022.02.19 |
---|---|
백준 1915: 가장 큰 정사각형 해설- python (0) | 2022.02.19 |
백준 2667: 단지번호붙이기 해설- python (0) | 2022.02.13 |
백준 11724: 연결요소의 개수 해설- python (0) | 2022.02.11 |
백준 2606: 바이러스 해설- python (0) | 2022.02.10 |