Coding test
[백준/7576/파이썬] 토마토
코드짜는쿤스트
2023. 1. 18. 15:49
소스코드
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
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:
matrix[nx][ny] = matrix[x][y] + 1
queue.append([nx, ny])
bfs()
for i in matrix:
for j in i:
if j == 0:
print(-1)
exit(0)
res = max(res, max(i))
print(res - 1)
알고리즘
예전에 풀었던 문제인것 같아서 다시보니 2차원으로 푸는 문제였다. 이게 골드 5라니 손쉽게 풀려서 성장함을 느낄수 있었다. 토마토 하나를 가지고 상하좌우를 탐색해나가며 푸는 문제이다. 자세한 설명은 밑에 링크에 있다. :)
https://codekunst.tistory.com/5
[백준 7569/파이썬] 토마토
소스코드 import sys from collections import deque m,n,h = map(int,input().split()) graph = [] queue = deque([]) for i in range(h): tmp = [] for j in range(n): tmp.append(list(map(int,sys.stdin.readline().split()))) for k in range(m): if tmp[j][k]==1: q
codekunst.tistory.com