-
[백준 / Python] 7576번 토마토 | 초코더알고리즘/백준 2020. 1. 20. 01:10
https://www.acmicpc.net/problem/7576
접근법
다른 부분은 앞의 게시글과 거의 동일합니다. 참고해주세요!
다른점은 앞의 문제는 queue에 첫 시작점을 넣고 다음좌표로 상하좌우 비교해 주었다면
토마토가 1인 좌표를 queue에다가 저장한후, 그 queue를 차례로 비교해주는것입니다.
나의 풀이
import sys from collections import deque m,n=list(map(int,sys.stdin.readline().split())) tomato=[list(map(int,sys.stdin.readline().split())) for _ in range(n)] visited = [[-1]*m for _ in range(n)] dx = [-1,0,1,0] dy = [0,1,0,-1] queue=deque() for i in range(n): for j in range(m): if tomato[i][j]==1: visited[i][j]=0 queue.append([i,j]) while queue: x,y=queue.popleft() for i in range(4): nx=x+dx[i] ny=y+dy[i] if nx<0 or nx>=n or ny<0 or ny>=m: continue if tomato[nx][ny] == 0 and visited[nx][ny] == -1: queue.append([nx,ny]) visited[nx][ny]=visited[x][y]+1 ans=max([max(row) for row in visited]) #이해안감 for i in range(n): for j in range(m): if tomato[i][j]==0 and visited[i][j]==-1: ans=-1 print(ans)
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / Python] 9093번 단어 뒤집기 | 초코더 (0) 2020.01.26 [백준 / Python] 10828 스택 | 초코더 (0) 2020.01.26 [백준 / Python] 2178번 미로 탐색 | 초코더 (0) 2020.01.19 [백준 / Python] 1012번 유기농 배추 | 초코더 (2) 2020.01.18 [백준 / Python] 2667번 단지번호붙이기 | 초코더 (3) 2020.01.18