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 |