본문 바로가기

알고리즘

[Algorithm] 2589. 보물섬

https://www.acmicpc.net/problem/2589

 

2589번: 보물섬

보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서

www.acmicpc.net

 

내 오답 포인트 - 굳이 combination 을 썼다. 그래서 시간초과남.

import sys
from collections import deque

dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]


def bfs(a, b):
    global result
    q = deque()
    visit[a][b] = True
    q.append((a, b, 0))
    while q:
        x, y, cnt = q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < n and 0 <= ny < m and data[nx][ny] == 'L' and not visit[nx][ny]:
                result = max(result, cnt + 1)
                visit[nx][ny] = True
                q.append((nx, ny, cnt + 1))


input = sys.stdin.readline
n, m = map(int, input().split())
data = []
for i in range(n):
    data.append(list(input()))

result = -1e9
for i in range(n):
    for j in range(m):
        if data[i][j] == 'L':
            visit = [[False] * m for _ in range(n)]
            bfs(i, j)

print(result)