728x90
https://www.acmicpc.net/problem/7576
- 코드
from sys import stdin
from collections import deque
# 상자 크기 M*N
M,N = map(int,stdin.readline().split())
tomato = [list(map(int,stdin.readline().split())) for _ in range(N)]
# 익은 토마토 위치
ripetomato = deque()
for r in range(N):
for c in range(M):
if tomato[r][c] == 1:
ripetomato.append((r,c))
# 익은 토마토 주변 토마토 익히기
while ripetomato:
cr,cc = ripetomato.popleft()
for dr,dc in [(-1,0),(1,0),(0,-1),(0,1)]:
nr = cr + dr
nc = cc + dc
if 0 <= nr < N and 0 <= nc < M and tomato[nr][nc] == 0:
tomato[nr][nc] = tomato[cr][cc] + 1
ripetomato.append((nr,nc))
# 걸린 날
day = 0
# 다 익었는가 확인해보자
for i in tomato:
day = max(day,max(i))
# 익지 않은 토마토가 있다면 실패
if i.count(0):
day = 0
break
# 익은 토마토 번호가 1이라서
print(day-1)
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 11404. 플로이드 - Python (0) | 2022.06.15 |
---|---|
[백준] 7569. 토마토 - Python (0) | 2022.06.15 |
[백준] 1181. 단어 정렬 - Python (0) | 2022.06.13 |
[프로그래머스] Lv.1 크레인 인형뽑기 게임 (0) | 2022.06.13 |
[백준] 4949. 균형잡힌 세상 - Python (0) | 2022.06.13 |
댓글