쉬운 bfs 문제
백준 토마토들을 열심히 풀었다면 10분컷할 수 있다
연결된 오렌지 군집에 여러 썩은 오렌지가 있는 경우만 조심해서 큐에 미리 넣어주면 된다
from collections import deque
class Solution:
def orangesRotting(self, grid: List[List[int]]) -> int:
n,m = len(grid), len(grid[0])
v = [[-1]*m for _ in range(n)]
dirx, diry=[0,0,-1,1],[-1,1,0,0]
q = deque()
for i in range(n):
for j in range(m):
# 썩은 오렌지
if grid[i][j]==2:
q.append((j, i))
v[i][j] = 0
while q:
cx, cy = q.popleft()
for dx, dy in zip(dirx, diry):
nx, ny = cx+dx, cy+dy
if 0<=nx<m and 0<=ny<n and grid[ny][nx]==1 and v[ny][nx]==-1:
q.append((nx,ny))
v[ny][nx] = v[cy][cx]+1
res = 0
for i in range(n):
for j in range(m):
if grid[i][j]==1:
if v[i][j]==-1:
return -1
res = max(res, v[i][j])
return res
'Dev > Algorithm' 카테고리의 다른 글
127. Word Ladder (Hard) (0) | 2024.11.07 |
---|---|
54. Spiral Matrix (Medium) (0) | 2024.11.01 |
5. Longest Palindromic Substring (Medium) (0) | 2024.11.01 |
소프티어 성적 평균 (0) | 2024.11.01 |
253. Meeting Rooms II (Medium) (0) | 2024.10.31 |