Skip to content

Commit

Permalink
[코딩테스트책] 5-2. 미로탈출 (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
heerucan committed Feb 13, 2022
1 parent 87fbc5e commit 5deb7c4
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions CodingTest/CH5 DFSBFS/미로탈출.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from collections import deque

# N, M을 공백을 기준으로 구분하여 입력 받기
n, m = map(int, input().split())

# 2차원 리스트의 맵 정보 입력 받기
graph = []
for i in range(n):
graph.append(list(map(int, input())))

# 이동할 네 가지 방향 정의 (상, 하, 좌, 우)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

# BFS 소스코드 구현
def bfs(x, y):
# 큐(Queue) 구현을 위해 deque 라이브러리 사용
queue = deque()
queue.append((x, y))
# 큐가 빌 때까지 반복하기
while queue:
x, y = queue.popleft()

for i in range(4): # 현재 위치에서 상하좌우 체크
nx = x + dx[i]
ny = y + dy[i]

if nx < 0 or nx >= n or ny < 0 or ny >= m: # 미로 찾기 공간을 벗어난 경우 무시
continue

if graph[nx][ny] == 0: # 괴물이 있는 경우 - 0인 경우 무시
continue

if graph[nx][ny] == 1: # 해당 노드를 처음 방문하는 경우에만 최단 거리 기록
graph[nx][ny] = graph[x][y] + 1
queue.append((nx, ny))

# 가장 오른쪽 아래까지의 최단 거리 반환
return graph[n - 1][m - 1]

# BFS를 수행한 결과 출력
print(bfs(0, 0))

0 comments on commit 5deb7c4

Please sign in to comment.