[PY] 2718 : 미로 찾기

https://www.acmicpc.net/problem/2178

하라는 것만 하면 된다. 칸 단위의 BFS가 나에게는 훨씬 쉽게 느껴지는 느낌..

2차원 배열에 대한 고민을 좀 더 해보는게 좋을 것 같다.

import sys
from collections import deque

destX, destY = list(map(int, sys.stdin.readline().strip().split()))
maze = []
visitedCnt = [[-1]*destY for _ in range(destX)]
dx = [1, -1, 0, 0]
dy = [0, 0, -1, 1]



for i in range(destX):
    mazeLine = sys.stdin.readline().strip()
    maze.append(mazeLine)

def bfs():
    standardQueue = deque()
    standardQueue.append([0, 0, 1])
    visitedCnt[0][0] = 1
    
    while standardQueue:
        item = standardQueue.popleft()

        for i in range(4):
            tmpX = item[0] + dx[i]
            tmpY = item[1] + dy[i]
            stepCnt = item[2] + 1

            if(tmpX < 0 or tmpX >= destX or tmpY < 0 or tmpY >= destY):
                continue

            if(visitedCnt[tmpX][tmpY] != -1):
                continue

            if(maze[tmpX][tmpY] == '0'):
                continue



            visitedCnt[tmpX][tmpY] = stepCnt
            standardQueue.append([tmpX, tmpY, stepCnt])




bfs()
print(visitedCnt[destX - 1][destY - 1])

'문제풀이' 카테고리의 다른 글

[PY] <!> 1707 : 이분 그래프  (0) 2025.04.01
[PY] 7569 : 토마토  (0) 2025.04.01
[PY] 21606 : 아침 산책  (0) 2025.03.31
[PY] 11725 : 트리의 부모 찾기  (0) 2025.03.31
[PY] 2606 : 바이러스  (0) 2025.03.31