λ―Έλ‘ νμ
π λ¬Έμ
λ¬Έμ
N×Mν¬κΈ°μ λ°°μ΄λ‘ ννλλ λ―Έλ‘κ° μλ€.
λ―Έλ‘μμ 1μ μ΄λν μ μλ μΉΈμ λνλ΄κ³ , 0μ μ΄λν μ μλ μΉΈμ λνλΈλ€. μ΄λ¬ν λ―Έλ‘κ° μ£Όμ΄μ‘μ λ, (1, 1)μμ μΆλ°νμ¬ (N, M)μ μμΉλ‘ μ΄λν λ μ§λμΌ νλ μ΅μμ μΉΈ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. ν μΉΈμμ λ€λ₯Έ μΉΈμΌλ‘ μ΄λν λ, μλ‘ μΈμ ν μΉΈμΌλ‘λ§ μ΄λν μ μλ€.
μμ μμμλ 15μΉΈμ μ§λμΌ (N, M)μ μμΉλ‘ μ΄λν μ μλ€. μΉΈμ μ λμλ μμ μμΉμ λμ°© μμΉλ ν¬ν¨νλ€.
μ λ ₯
첫째 μ€μ λ μ μ N, M(2 ≤ N, M ≤ 100)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ°μ μ€μλ Mκ°μ μ μλ‘ λ―Έλ‘κ° μ£Όμ΄μ§λ€. κ°κ°μ μλ€μ λΆμ΄μ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μ§λμΌ νλ μ΅μμ μΉΈ μλ₯Ό μΆλ ₯νλ€. νμ λμ°©μμΉλ‘ μ΄λν μ μλ κ²½μ°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
π§ νμ΄
νμ΄
# λ°±μ€ 2178λ² λ¬Έμ : λ―Έλ‘ νμ
from collections import deque # νλ₯Ό μν deque λΆλ¬μ€κΈ°
n, m = map(int, input().split()) # n, m μ
λ ₯ λ° ν λΉ
dx = [1, -1, 0, 0] # μ’μ°λ‘ μμ§μΌ μ μκ² dx ν λΉ
dy = [0, 0, 1, -1] # μνλ‘ μμ§μΌ μ μκ² dy ν λΉ
maze = [] # λ―Έλ‘λ₯Ό μν λΉ λ°°μ΄ ν λΉ
for _ in range(n): # nλ§νΌ λ°λ³΅
maze.append(list(map(int, input()))) # λ―Έλ‘ μ
λ ₯ κ° λ°μμ 2μ°¨μ λ°°μ΄ λ§λ€κΈ°
Q = deque() # λΉ ν ν λΉ
check = [[0] * m for _ in range(n)] # λ°©λ¬Έ μ 체ν¬ν λΉ n * m ν¬κΈ°μ 2μ°¨μ λ°°μ΄ ν λΉ
check[0][0] = -1 # μμ μ§μ μ μ²΄ν¬ (-1)λ‘ νμ
Q.append((0, 0, 1)) # νμ 0, 0, 1 μΆκ°
while Q: # νμ μμκ° μλ κ²½μ°μ κ³μ λ°λ³΅
x, y, dis = Q.popleft() # νμ 첫 μμλ₯Ό popνμ¬ x, y, disμ ν λΉ
if x == m - 1 and y == n - 1: # x νΉμ yκ° m, nμΌλ‘ λ μ리μ λλ¬νμ λ,
print(dis) # 거리λ₯Ό λνλ΄λ dis κ° μΆλ ₯ (BFSλ μ΅λ¨κ±°λ¦¬λ₯Ό μΆλ ₯ν΄μ€)
break # λ°λ³΅λ¬Έ μ’
λ£
for i in range(4): # μνμ’μ°λ‘ μμ§μ¬μΌ νκΈ°μ 4λ§νΌ λ°λ³΅
nx = dx[i] + x # xκ° λ³κ²½νλ©° μ’μ°λ‘ μμ§μΌ μ μκ² ν¨
ny = dy[i] + y # yκ° λ³κ²½νλ©° μνλ‘ μμ§μΌ μ μκ² ν¨
if 0 <= nx < m and 0 <= ny < n and check[ny][nx] != -1 and maze[ny][nx] != 0: # nx, nyκ° λ―Έλ‘ μμ μμΌλ©΄μ, λ°©λ¬Ένμ§ μμκ³ , ν΄λΉ μμΉκ° λ―Έλ‘μ λ²½(0)μ΄ μλ κ²½μ°,
check[ny][nx] = -1 # ν΄λΉ μμΉλ₯Ό λ°©λ¬Έν¨(-1)λ‘ λ°κΏμ€
Q.append((nx, ny, dis + 1)) # Qμ μμ§μΈ x, y μμΉμ 1 μΆκ°ν 거리λ₯Ό λ€μ μΆκ°ν΄ μ€
'𧩠Algorithm > π¨ Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νμ΄μ¬] λ°±μ€ 2468λ² λ¬Έμ : μμ μμ (0) | 2022.08.26 |
---|---|
[νμ΄μ¬] λ°±μ€ 2667λ² λ¬Έμ : λ¨μ§λ²νΈλΆμ΄κΈ° (0) | 2022.08.26 |
[νμ΄μ¬] λ°±μ€ 10773λ² λ¬Έμ : μ λ‘ (0) | 2022.08.09 |
[νμ΄μ¬] λ°±μ€ 10828λ² λ¬Έμ : μ€ν (0) | 2022.08.09 |
[νμ΄μ¬ μκ³ λ¦¬μ¦] λμ μλ₯΄κΈ°(κ²°μ μκ³ λ¦¬μ¦) (0) | 2022.08.01 |