본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 14940번 쉬운 최단거리

by 현장 2025. 1. 12.

-Code

from collections import deque

n, m = map(int, input().split())
board = []
visit = [[-1] * m for _ in range(n)]
dy = [-1, 0, 1, 0]
dx = [0, -1, 0, 1]

for i in range(n):
    line = list(map(int, input().split()))
    board.append(line)

    for j in range(m):
        if line[j] == 2:
            start_y, start_x = i, j
            visit[start_y][start_x] = 0
        if line[j] == 0:
            visit[i][j] = 0


def bfs():
    deq = deque([(start_y, start_x)])

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

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

            if not (0 <= nxt_y < n and 0 <= nxt_x < m):
                continue

            if board[nxt_y][nxt_x] == 0 or visit[nxt_y][nxt_x] != -1:
                continue

            visit[nxt_y][nxt_x] = visit[y][x] + 1
            deq.append((nxt_y, nxt_x))

bfs()

for el in visit:
    print(*el)

-1인 경우를 생각을 안하고 풀어서 틀려서 넣었으나 index 오류가 생겨서 찾아보니 -1인 경우 index를 넘어갈 수 있는 부분을 해결해야 해서 해당 부분을 수정해서 성공했습니다.