λ¬Έμ
μκ³ μ€ν μ΄μμ§μ΄ λͺ¨λ λ―Έλ‘μ κ°νλ€. λ―Έλ‘λ N*M ν¬κΈ°μ΄λ©°, μ΄ 1*1ν¬κΈ°μ λ°©μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€. λ―Έλ‘λ λΉ λ°© λλ λ²½μΌλ‘ μ΄λ£¨μ΄μ Έ μκ³ , λΉ λ°©μ μμ λ‘κ² λ€λ μ μμ§λ§, λ²½μ λΆμμ§ μμΌλ©΄ μ΄λν μ μλ€.
μκ³ μ€ν μ΄μμ§μ μ¬λ¬λͺ μ΄μ§λ§, νμ λͺ¨λ κ°μ λ°©μ μμ΄μΌ νλ€. μ¦, μ¬λ¬ λͺ μ΄ λ€λ₯Έ λ°©μ μμ μλ μλ€. μ΄λ€ λ°©μμ μ΄λν μ μλ λ°©μ μνμ’μ°λ‘ μΈμ ν λΉ λ°©μ΄λ€. μ¦, νμ¬ μ΄μμ§μ΄ (x, y)μ μμ λ, μ΄λν μ μλ λ°©μ (x+1, y), (x, y+1), (x-1, y), (x, y-1) μ΄λ€. λ¨, λ―Έλ‘μ λ°μΌλ‘ μ΄λ ν μλ μλ€.
λ²½μ νμμλ μ΄λν μ μμ§λ§, μκ³ μ€νμ 무기 AOJλ₯Ό μ΄μ©ν΄ λ²½μ λΆμμ΄ λ²λ¦΄ μ μλ€. λ²½μ λΆμλ©΄, λΉ λ°©κ³Ό λμΌν λ°©μΌλ‘ λ³νλ€.
λ§μ½ μ΄ λ¬Έμ κ° μκ³ μ€νμ μλ€λ©΄, μ΄μμ§λ€μ κΆκ·Ήμ 무기 sudoλ₯Ό μ΄μ©ν΄ λ²½μ ν λ²μ λ€ μμ λ²λ¦΄ μ μμ§λ§, μνκΉκ²λ μ΄ λ¬Έμ λ Baekjoon Online Judgeμ μλ‘λμ΄ μκΈ° λλ¬Έμ, sudoλ₯Ό μ¬μ©ν μ μλ€.
νμ¬ (1, 1)μ μλ μκ³ μ€ν μ΄μμ§μ΄ (N, M)μΌλ‘ μ΄λνλ €λ©΄ λ²½μ μ΅μ λͺ κ° λΆμμ΄μΌ νλμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ λ―Έλ‘μ ν¬κΈ°λ₯Ό λνλ΄λ κ°λ‘ ν¬κΈ° M, μΈλ‘ ν¬κΈ° N (1 ≤ N, M ≤ 100)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ°μ μ€μλ λ―Έλ‘μ μνλ₯Ό λνλ΄λ μ«μ 0κ³Ό 1μ΄ μ£Όμ΄μ§λ€. 0μ λΉ λ°©μ μλ―Ένκ³ , 1μ λ²½μ μλ―Ένλ€.
(1, 1)κ³Ό (N, M)μ νμ λ«λ €μλ€.
μΆλ ₯
첫째 μ€μ μκ³ μ€ν μ΄μμ§μ΄ (N, M)μΌλ‘ μ΄λνκΈ° μν΄ λ²½μ μ΅μ λͺ κ° λΆμμ΄μΌ νλμ§ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/1261
π‘ νμ΄ λ° μ½λ
import heapq
INF = int(1e9)
m, n = map(int, input().split())
graph = []
for _ in range(n):
graph.append(list(map(int, input())))
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
result = [[INF]*m for _ in range(n)]
hq = []
heapq.heappush(hq, (0, 0, 0))
while hq:
r, x, y = heapq.heappop(hq)
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
nr = r
if nx < 0 or ny < 0 or nx >= n or ny >= m or result[nx][ny] != INF:
continue
if graph[nx][ny] == 1:
nr = r + 1
if r < result[nx][ny] and result[nx][ny] >= nr:
result[nx][ny] = nr
heapq.heappush(hq, (nr, nx, ny))
if result[n-1][m-1] == INF:
print(0)
else:
print(result[n-1][m-1])
λ€μ΅μ€νΈλΌμ λλΉ μ°μ νμ μκ³ λ¦¬μ¦μ μ μ©νλ€. κ° μ’νλ₯Ό μ μ , μνμ’μ°λ κ°μ , λ²½μ κ°μ€μΉλ‘ λκ³ μ΅λ¨ κ²½λ‘λ₯Ό ꡬνλ€κ³ μκ°νλ©΄ λλ€. μκ° μ΄κ³Ό λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ result[nx][ny] != INF 쑰건μ μΆκ°ν΄ μ΄λ―Έ λ€λ¦° μ’νλ λ€μ λ€λ¦¬μ§ μλλ‘ μ‘°μΉνλ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 3190λ² λ± - νμ΄μ¬(Python) (3) | 2022.02.23 |
---|---|
[BOJ] λ°±μ€ 1238λ² νν° - νμ΄μ¬(Python) (0) | 2022.01.19 |
[BOJ] λ°±μ€ 11000λ² κ°μμ€ λ°°μ - νμ΄μ¬(Python) (0) | 2022.01.10 |
[BOJ] λ°±μ€ 2212λ² μΌμ - νμ΄μ¬(Python) (0) | 2022.01.10 |
[BOJ] λ°±μ€ 15686λ² μΉν¨ λ°°λ¬ - νμ΄μ¬(Python) (0) | 2022.01.07 |