λ¬Έμ
N×Mμ νλ ¬λ‘ ννλλ λ§΅μ΄ μλ€. 맡μμ 0μ μ΄λν μ μλ κ³³μ λνλ΄κ³ , 1μ μ΄λν μ μλ λ²½μ΄ μλ κ³³μ λνλΈλ€. λΉμ μ (1, 1)μμ (N, M)μ μμΉκΉμ§ μ΄λνλ € νλλ°, μ΄λ μ΅λ¨ κ²½λ‘λ‘ μ΄λνλ € νλ€. μ΅λ¨κ²½λ‘λ 맡μμ κ°μ₯ μ μ κ°μμ μΉΈμ μ§λλ κ²½λ‘λ₯Ό λ§νλλ°, μ΄λ μμνλ μΉΈκ³Ό λλλ μΉΈλ ν¬ν¨ν΄μ μΌλ€.
λ§μ½μ μ΄λνλ λμ€μ ν κ°μ λ²½μ λΆμκ³ μ΄λνλ κ²μ΄ μ’ λ κ²½λ‘κ° μ§§μμ§λ€λ©΄, λ²½μ ν κ° κΉμ§ λΆμκ³ μ΄λνμ¬λ λλ€.
ν μΉΈμμ μ΄λν μ μλ μΉΈμ μνμ’μ°λ‘ μΈμ ν μΉΈμ΄λ€.
λ§΅μ΄ μ£Όμ΄μ‘μ λ, μ΅λ¨ κ²½λ‘λ₯Ό κ΅¬ν΄ λ΄λ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ°μ μ€μ Mκ°μ μ«μλ‘ λ§΅μ΄ μ£Όμ΄μ§λ€. (1, 1)κ³Ό (N, M)μ νμ 0μ΄λΌκ³ κ°μ νμ.
μΆλ ₯
첫째 μ€μ μ΅λ¨ 거리λ₯Ό μΆλ ₯νλ€. λΆκ°λ₯ν λλ -1μ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/2206
π‘ νμ΄ λ° μ½λ
from collections import deque
n, m = map(int, input().split())
graph = []
for _ in range(n):
graph.append(list(map(int, input())))
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
def bfs(x, y):
visited = [[[0 for _ in range(2)] for _ in range(m)] for _ in range(n)]
visited[x][y][0] = 1
queue = deque()
queue.append((x, y, 0))
while queue:
x, y, c = queue.popleft()
if (x, y) == (n-1, m-1):
return visited[x][y][c]
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if nx < 0 or nx >= n or ny < 0 or ny >= m:
continue
if graph[nx][ny] == 1 and c == 0 and not visited[nx][ny][1]:
queue.append((nx, ny, 1))
visited[nx][ny][1] = visited[x][y][0] + 1
elif graph[nx][ny] == 0 and not visited[nx][ny][c]:
queue.append((nx, ny, c))
visited[nx][ny][c] = visited[x][y][c] + 1
return 0
result = bfs(0, 0)
if result:
print(result)
else:
print(-1)
μ΅λ¨κ²½λ‘ λ¬Έμ μ΄λ―λ‘ BFSλ₯Ό μ¬μ©νλ©°, λ¬Έμ μ ν΅μ¬μ΄μ μ£Όμν μ μ λ€μκ³Ό κ°λ€.
- μ΄λκ°λ₯ν κ²½λ‘λΌκ³ ν΄μ 무μμ queueμ λ£λ κ²μ΄ μλλΌ, λ²½μ λΆμ¨ νμλ₯Ό ν¨κ» κΈ°λ‘νκΈ° μν΄ λ²½μ λ§λ¬μ§λ§ μ΄μ μ νλ²λ λ²½μ λΆμ μ μ΄ μλ κ²½μ°μ λ²½μ λΆμ νμμ μκ΄μμ΄ λ²½μ λ§λμ§ μμμ κ²½μ°λ₯Ό λλμ΄μ queueμ μ½μ ν΄μΌ νλ€.
- λ°©λ¬Έ νμ(visited)μ κ²½μ° λ²½μ λΆμ μ μ΄ μλ κ²½μ°μ λ²½μ λΆμ μ μ΄ μλ κ²½μ°λ₯Ό λ°λ‘ λλμ΄ κΈ°λ‘ν΄μΌ νλ€. μ¦, 3μ°¨μ λ°°μ΄μ μ¬μ©νλ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 1890λ² μ ν - νμ΄μ¬(Python) (0) | 2022.08.13 |
---|---|
[BOJ] λ°±μ€ 16236λ² μκΈ° μμ΄ - νμ΄μ¬(Python) (0) | 2022.07.30 |
[BOJ] λ°±μ€ 12904λ² Aμ B - νμ΄μ¬(Python) (0) | 2022.07.06 |
[BOJ] λ°±μ€ 3109λ² λΉ΅μ§ - νμ΄μ¬(Python) (0) | 2022.07.06 |
[BOJ] λ°±μ€ 1781λ² μ»΅λΌλ©΄ - νμ΄μ¬(Python) (0) | 2022.07.04 |