😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[BAEKJOON python] 2178_λ―Έλ‘œνƒμƒ‰ λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/BAEKJOON

[BAEKJOON python] 2178_λ―Έλ‘œνƒμƒ‰

μ§•μ§•μ•ŒνŒŒμΉ΄ 2022. 10. 6. 16:43
728x90
λ°˜μ‘ν˜•
N×M크기의 λ°°μ—΄λ‘œ ν‘œν˜„λ˜λŠ” 미둜
λ―Έλ‘œμ—μ„œ 1은 이동할 수 μžˆλŠ” 칸을 λ‚˜νƒ€λ‚΄κ³ , 0은 이동할 수 μ—†λŠ” 칸을 λ‚˜νƒ€λ‚Έλ‹€.
μ΄λŸ¬ν•œ λ―Έλ‘œκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, (1, 1)μ—μ„œ μΆœλ°œν•˜μ—¬ (N, M)의 μœ„μΉ˜λ‘œ 이동할 λ•Œ μ§€λ‚˜μ•Ό ν•˜λŠ” μ΅œμ†Œμ˜ μΉΈ 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±
ν•œ μΉΈμ—μ„œ λ‹€λ₯Έ 칸으둜 이동할 λ•Œ, μ„œλ‘œ μΈμ ‘ν•œ 칸으둜만 이동

첫째 쀄에 두 μ •μˆ˜ N, M(2 ≤ N, M ≤ 100)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” M개의 μ •μˆ˜λ‘œ λ―Έλ‘œκ°€ 주어진닀. 각각의 μˆ˜λ“€μ€ λΆ™μ–΄μ„œ μž…λ ₯으둜 주어진닀.
첫째 쀄에 μ§€λ‚˜μ•Ό ν•˜λŠ” μ΅œμ†Œμ˜ μΉΈ 수λ₯Ό 좜λ ₯ν•œλ‹€. 항상 λ„μ°©μœ„μΉ˜λ‘œ 이동할 수 μžˆλŠ” 경우만 μž…λ ₯으둜 주어진닀
from collections import deque

n, m = map(int, input().split())

maze = []
# μƒν•˜μ’Œμš°
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]

for i in range(n) :
    maze.append(list(map(int, input())))

def bfs(x, y) :
    queue = deque()
    queue.append((x, y))

    while queue :
        x, y = queue.popleft()

        for i in range(4) :
            nx = x + dx[i]
            ny = y + dy[i]

            if (0 <= nx < n and 0 <= ny < m) :
                if (maze[nx][ny] == 1) :
                    queue.append((nx, ny))
                    maze[nx][ny] = maze[x][y] + 1

bfs(0, 0)
print(maze[n-1][m-1])

# input
# 4 6
# 101111
# 101010
# 101011
# 111011

# result
# 15
728x90
λ°˜μ‘ν˜•
Comments