from collections import deque
# 상 하 좌 우
dy = [-1, 1, 0, 0]
dx = [0, 0, -1, 1]
def bfs(sy, sx, hour):
queue = deque([(sy, sx, hour)]) # 시작지점 추가하고 시작
visited = [[0 for _ in range(garo)] for _ in range(sero)] # 방문한 곳 다시 방문하지 못하도록 만든 리스트
visited[sy][sx] = 1 # 시작지점 방문처리
while queue:
y, x, hour = queue.popleft() # 좌표 하나 가져오기
for i in range(4):
ny = y + dy[i]
nx = x + dx[i]
if 0 <= ny < sero and 0 <= nx < garo: # 다음 갈 곳이 지도 범위를 벗어나지 않는다면
if treasure_map[ny][nx] == 'W' or visited[ny][nx]: # 다음 갈 곳이 바다이거나 방문했던 곳이면 가지않도록
continue
visited[ny][nx] = 1 # 방문처리
queue.append((ny, nx, hour+1)) # queue에 가볼 곳으로 추가하기
return hour # 시작지점에서 막다른 곳까지 걸리는 시간 return
sero, garo = map(int, input().split()) # 지도의 세로 길이, 가로 길이
treasure_map = [input() for _ in range(sero)] # 보물 지도
answer = 0
for h in range(sero):
gap = 0
for w in range(garo):
if treasure_map[h][w] == 'L': # 해당 좌표 육지이면
answer = max(answe, bfs(h, w, 0)) # 탐색해보는데, 더 긴 시간으로 갱신
print(answer)
* PYPY로 제출했습니다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Python] 12015. 가장 긴 증가하는 부분 수열2 (0) | 2021.10.21 |
---|---|
[Python] 2776. 암기왕 (0) | 2021.10.20 |
[Python] 9205. 맥주마시면서 걸어가기 (0) | 2021.10.19 |
[Python] 2293. 동전 1 (0) | 2021.10.02 |
[Python] 9495. 스티커 (0) | 2021.09.30 |