728x90
BFS로 최단거리를 구하면 되는 문제이다.
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
부수면서 이동하기 문제의 쉬운 버전이다 ㅎㅎ
이제 이런 간단한 그래프 문제는 한번 시도만에 바로 맞다니 ㅠㅠ 감격스러운걸...!
from collections import deque
n, m = map(int, input().split())
graph = []
for i in range(n):
graph.append(list(map(int, input())))
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs():
dist = [[0] * m for _ in range(n)]
q = deque()
q.append((0,0)) # start
dist[0][0] = 1
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and dist[nx][ny] == 0 and graph[nx][ny] == 1:
dist[nx][ny] = dist[x][y] + 1
q.append((nx, ny))
return dist[n-1][m-1]
print(bfs())
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 1427 소트인사이드 Python (0) | 2022.02.06 |
---|---|
[백준] 2225 합분해 in Python <점화식을 테이블을 그리면 쉽게 구하는 DP문제> (0) | 2022.02.05 |
[백준] 2206 벽 부수고 이동하기 와 나의 시행착오들 기록 (0) | 2022.02.04 |
[백준] 12865 평범한 배낭, Knapsack Problem (0) | 2022.02.03 |
[프로그래머스] 크레인 인형 뽑기 (0) | 2022.02.03 |