728x90
반응형
https://www.acmicpc.net/problem/2589
2589번: 보물섬
보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서
www.acmicpc.net
문제 해결
- 전형적인 bfs문제
- 그러나 시작점을 기준점으로 하여 모든 경우의 시작점에서 다 경우의 수를 계산해봐야 하는지 의문이 들었다.
- 50*50 지점이라 계산이 되겠지만 사실 다른 방법이 생각이 안났다.
- python3버전은 시간초과가 뜨고 pypy3버전은 통과를 한다.
- 시간 문제에 대해서는 더 고민해봐야겠다.
CODE
from collections import deque
import sys
input = sys.stdin.readline
def bfs(x,y):
dxs = [-1,1,0,0]
dys = [0,0,-1,1]
que = deque()
que.append((x,y))
visited = [[-1]*m for _ in range(n)]
visited[x][y] = 0
target = 0
while que:
a, b = que.popleft()
for dx, dy in zip(dxs, dys):
nx = a + dx ; ny = b + dy
if 0<=nx<n and 0<=ny<m and visited[nx][ny] == -1 and graph[nx][ny] == 'L':
visited[nx][ny] = visited[a][b] + 1
target = max(target,visited[nx][ny])
que.append((nx,ny))
return target
if __name__=='__main__':
n, m = map(int, input().split())
graph = [[str(c) for c in input().rstrip()] for _ in range(n)]
answer = 0
for i in range(n):
for j in range(m):
if graph[i][j] == 'L':
answer = max(answer,bfs(i,j))
print(answer)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 17609 회문 (0) | 2023.04.23 |
---|---|
[python] 백준 3649 로봇 프로젝트 (1) | 2023.04.22 |
[python] 백준 2621 카드게임 (0) | 2023.04.21 |
[python] 백준 1799 비숍 (0) | 2023.04.20 |
[python] 백준 16987 계란으로 계란치기 (0) | 2023.04.18 |
댓글