728x90
BFS로 최단거리를 구하면 되는 문제이다.
https://www.acmicpc.net/problem/2178
부수면서 이동하기 문제의 쉬운 버전이다 ㅎㅎ
이제 이런 간단한 그래프 문제는 한번 시도만에 바로 맞다니 ㅠㅠ 감격스러운걸...!
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 |