백준 2589 보물섬 python

청천·2022년 9월 30일
0

백준

목록 보기
26/41

모든 장소를 방문해서 최단 거리를 갱신.
브루트스포스!!!

거리는 visit로 저장해서 쓰는 게 낫다.!!! ans = 정수 에다가 갱신하는 것보다!

def BFS(x, y):
    global ans
    queue = deque()
    queue.append((x, y))
    visit[x][y] = 0
    while queue:
        x, y = queue.popleft()
        for dx, dy in di:
            nx, ny = dx + x, dy + y
            if nx < 0 or ny < 0 or nx >= N or ny >= M: continue
            if visit[nx][ny] != -1: continue
            if mapping[nx][ny] != 'L': continue
            visit[nx][ny] = visit[x][y] + 1
            queue.append((nx, ny))
            ans = max(ans, visit[nx][ny])


N, M = map(int, input().split())
mapping = [input() for _ in range(N)]
di = [(1,0), (-1,0), (0,1), (0,-1)]
ans = 0
for i in range(N):
    for j in range(M):
        if mapping[i][j] == 'L':
            visit = [[-1] * (M) for _ in range(N)]
            BFS(i, j)
print(ans)

0개의 댓글