[백준/Python] DFS/BFD - 7576번 토마토

👩🏻‍🏫 풀이

import sys
from collections import deque

# bfs 함수 밖에 정의
q = deque()

### 2
def bfs():
  # q.append((x,y))
  # 큐가 비워질때까지 반복문
  while q:
    x,y = q.popleft()
    for i in range(4):
      nx = x + dx[i]
      ny = y + dy[i]
      if 0 <= nx < n and 0 <= ny < m:
        if  graph[nx][ny] == 0:
          graph[nx][ny] = graph[x][y]+1
          q.append((nx,ny))
  
### 1
# 가로 칸, 세로 칸
m,n = map(int,sys.stdin.readline().split())
graph = []
dx = [-1,1,0,0]
dy = [0,0,-1,1]

# graph = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]]
for i in range(n):
  graph.append(list(map(int,sys.stdin.readline().split())))
# 익은 토마토의 좌표를 먼저 큐에 저장
for i in range(n):
  for j in range(m):
    if graph[i][j] == 1:
      q.append((i,j))  
      
### 3
bfs()
cnt = 0
# graph = [[9, 8, 7, 6, 5, 4], [8, 7, 6, 5, 4, 3], [7, 6, 5, 4, 3, 2], [6, 5, 4, 3, 2, 1]]
for i in graph:
  for j in i:
    if j == 0:
      print(-1)
      exit(0)
  cnt = max(cnt,max(i))
#  처음을 1로 시작했으므로 -1을 빼줌
print(cnt-1)
  • q = deque(): 함수 밖에서 정의
  • dfs(): 인자 없이 함수 사용
  • q.append((i,j)): 익은 토마토의 좌표를 먼저 큐에 저장한 후 dfs() 함수를 사용한다는 것 (dfs함수 안에서 append하지 않음)

✏️ Python 문법

  • 종료 코드
    • 일반적으로 0과 1의 두 가지 종료 코드만 사용
    • 0은 성공적인 실행을 나타내고, 1은 실패한 실행을 나타냅니다.

좋은 웹페이지 즐겨찾기