λ¬Έμ
N×Mν¬κΈ°μ λ°°μ΄λ‘ ννλλ λ―Έλ‘κ° μλ€.
1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 |
λ―Έλ‘μμ 1μ μ΄λν μ μλ μΉΈμ λνλ΄κ³ , 0μ μ΄λν μ μλ μΉΈμ λνλΈλ€. μ΄λ¬ν λ―Έλ‘κ° μ£Όμ΄μ‘μ λ, (1, 1)μμ μΆλ°νμ¬ (N, M)μ μμΉλ‘ μ΄λν λ μ§λμΌ νλ μ΅μμ μΉΈ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. ν μΉΈμμ λ€λ₯Έ μΉΈμΌλ‘ μ΄λν λ, μλ‘ μΈμ ν μΉΈμΌλ‘λ§ μ΄λν μ μλ€.
μμ μμμλ 15μΉΈμ μ§λμΌ (N, M)μ μμΉλ‘ μ΄λν μ μλ€. μΉΈμ μ λμλ μμ μμΉμ λμ°© μμΉλ ν¬ν¨νλ€.
μ λ ₯
첫째 μ€μ λ μ μ N, M(2 ≤ N, M ≤ 100)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ°μ μ€μλ Mκ°μ μ μλ‘ λ―Έλ‘κ° μ£Όμ΄μ§λ€. κ°κ°μ μλ€μ λΆμ΄μ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μ§λμΌ νλ μ΅μμ μΉΈ μλ₯Ό μΆλ ₯νλ€. νμ λμ°©μμΉλ‘ μ΄λν μ μλ κ²½μ°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μμ μ λ ₯ 1
4 6
101111
101010
101011
111011
μμ μΆλ ₯ 1
15
μμ μ λ ₯ 2
4 6
110110
110110
111111
111101
μμ μΆλ ₯ 2
9
μμ μ λ ₯ 3
2 25
1011101110111011101110111
1110111011101110111011101
μμ μΆλ ₯ 3
38
μμ μ λ ₯ 4
7 7
1011111
1110001
1000001
1000001
1000001
1000001
1111111
μμ μΆλ ₯ 4
13
# νμ΄ λ°©λ²
μ΄μ·¨μ½ κ΅μ¬μμ νμλ λ¬Έμ
* μ΅μμ μΉΈ μ * > bfs
μ§λμ¨ κΈΈλ€μ +1μ© updateνλ©΄ μλ‘μ΄ λ³μλ₯Ό λ§λ€μ§ μκ³ λ νλ²μ λͺ μΉΈμ΄ νμνμ§ μ μ μλ€.
# μ½λ
import sys
from collections import deque
sys.stdin = open("input.txt", "r")
n, m = map(int, sys.stdin.readline().split())
graph = [list(map(int, sys.stdin.readline().strip())) for _ in range(n)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(x,y):
queue = deque()
queue.append((x,y))
while queue:
x, y = queue.popleft()
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if nx <= -1 or nx >= n or ny <= -1 or ny >= m:
continue
if graph[nx][ny] == 0:
continue
if graph[nx][ny] == 1:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx,ny))
return graph[n-1][m-1]
print(bfs(0,0))
'π Study > Baekjoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Silver IV] 2331 - λ°λ³΅μμ΄ (0) | 2025.04.10 |
---|---|
[Silver III] 10451 - μμ΄ μ¬μ΄ν΄ (0) | 2025.04.09 |
[Silver II] 1260 - DFSμ BFS (0) | 2025.04.09 |
[Silver I] νμμ€ λ°°μ - 1931 (1) | 2024.11.27 |
[Silver II] μμ΄λ²λ¦° κ΄νΈ - 1541 (1) | 2024.11.27 |