[못 푼 문제] 백준 7576
정말 간단한 문제였지만 그 쉬운 한가지를 생각하지 못했다. 위 같은 경우 최댄 거리를 찾는 문제라 기본적으로 bfs를 사용하고 시작 지점이 둘 이상인 경우 단순히 시작 지점 둘다 큐에 넣어주면 그만인 것이다.
그리고 하나 더 프로그램을 종료싶은 경우 exit(0)
를 사용하자.
from collections import deque
m, n = map(int, input().split())
graph = []
for _ in range(n):
graph.append(list(map(int, input().split())))
mx = [1, -1, 0 ,0]
my = [0, 0, 1, -1]
queue = deque()
for i in range(n):
for j in range(m):
if graph[i][j] == 1:
queue.append([i, j])
maxi = 1
while queue:
x, y = queue.popleft()
maxi = max(maxi, graph[x][y])
for i in range(4):
nx = x + mx[i]
ny = y + my[i]
if 0 <= nx < n and 0 <= ny < m:
if graph[nx][ny] == 0:
graph[nx][ny] = graph[x][y] + 1
queue.append([nx, ny])
zero = False
for i in range(n):
if 0 in graph[i]:
print(-1)
exit(0)
print(maxi-1)
Author And Source
이 문제에 관하여([못 푼 문제] 백준 7576), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@junseo/못-푼-문제-백준-7576저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)