풀이 시간
구현 방법
- 모든 'L'대해 bfs로 최단거리 중 가장 긴 거리 (local_result)를 각각 구해주고, 최종적으로 result (보물이 묻혀 있는 두 곳 사이를 최단 거리로 이동하는 시간)을 구해줌
코드
import sys
from collections import deque
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
def bfs(x, y):
global local_result
queue = deque([])
queue.append((x, y, 0))
visit = [[False] * M for _ in range(N)]
visit[x][y] = True
while queue:
x, y, cnt = queue.popleft()
local_result = max(result, cnt)
for i in range(4):
nx = x + dx[i]; ny = y + dy[i]
if 0 <= nx < N and 0 <= ny < M:
if board[nx][ny] == 'L' and not visit[nx][ny]:
visit[nx][ny] = True
queue.append((nx, ny, cnt+1))
return
N, M = map(int, sys.stdin.readline()[:-1].split())
board = []
for n in range(N):
board.append(list(sys.stdin.readline()[:-1]))
result = 0
for n in range(N):
for m in range(M):
if board[n][m] == 'L':
local_result = 0
bfs(n, m)
result = max(result, local_result)
print(result)
결과