728x90
반응형
간단한 BFS 문제이다.
S에서 G로 가는 최단경로의 길이를 출력해주면 된다. 경로가 없다면 No Exit 출력
from collections import deque
def bfs(i, j):
d = [(-1, 0), (1, 0), (0, -1), (0, 1)]
q = deque()
q.append((i, j))
check[i][j] = 0
while q:
y, x = q.popleft()
for dy, dx in d:
Y, X = y+dy, x+dx
if (0 <= Y < R) and (0 <= X < C) and graph[Y][X] != 'X' and check[Y][X] == -1:
check[Y][X] = check[y][x] + 1
if graph[Y][X] == 'G':
return check[Y][X]
q.append((Y, X))
return None
for _ in range(int(input())):
R, C = map(int, input().split())
graph = [input() for a in range(R)]
check = [[-1]*C for b in range(R)]
for i in range(R):
for j in range(C):
if graph[i][j] == 'S':
ans = bfs(i, j)
print(f"Shortest Path: {ans}" if ans else "No Exit")
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 14501번 퇴사(python) (0) | 2022.02.22 |
---|---|
백준 알고리즘 11256번 사탕(python) (0) | 2021.10.26 |
백준 알고리즘 17204번 죽음의 게임(python) (0) | 2021.10.25 |
백준 알고리즘 16173번 점프왕 쩰리 (Small)(python) (0) | 2021.10.21 |
백준 알고리즘 3182번 한동이는 공부가 하기 싫어!(python) (0) | 2021.08.10 |