알고리즘/백준 문제풀이
[boj] 백준 2589 보물섬 python 풀이
감자156
2023. 7. 18. 16:37
반응형
문제
https://www.acmicpc.net/problem/2589
2589번: 보물섬
첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의
www.acmicpc.net
문제 풀이
bfs 문제로, 모든 땅에 대해서 가장 거리가 먼 육지를 bfs로 찾고 최대값을 갱신해가면서 완전탐색 돌리면 된다. 효율적인지는 모르겠음..
코드
import sys
input = sys.stdin.readline
import collections
H, W = map(int,input().split())
MAP = [list(input().strip()) for _ in range(H)]
MAX = 0
def bfs(MAP, i , j):
move = {(-1,0), (0,1), (0,-1), (1,0)}
visited = [[0 for _ in range(W)] for _ in range(H)]
q = collections.deque()
q.append((i,j,0))
visited[i][j] = 1
while q:
x,y,cnt = q.popleft()
for tx, ty in move:
nx = x + tx
ny = y + ty
if 0<=nx<H and 0<=ny<W and visited[nx][ny] == 0 and MAP[nx][ny] == 'L':
q.append((nx,ny,cnt+1))
visited[nx][ny] = 1
return cnt
for i in range(H):
for j in range(W):
if MAP[i][j] == 'L': # 가장 멀리 떨어진 곳 탐색 시작
MAX = max(MAX,bfs(MAP, i, j))
print(MAX)
반응형