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 |