CodingTest/Baekjun Online Judge
[ BOJ / 파이썬 ] 2178.미로 탐색
EEOOOO
2023. 1. 27. 14:35
BFS
BFS문제 중 거리 측정 유형이다.
BFS문제의 가장 전형적인 유형이기도 하고, 개인적으로 주구장창 풀었던 스타일이라 술술 써내려갔다.
문제 ( 링크 )
기본적인 BFS는 방문 여부를 담을 배열을 따로 두지만, 해당 문제에서 밟아야할 공간이 1이므로 1 이상인 경우는 방문했다고 여기며 그 자리에 현재까지의 최단거리를 바로 대체해 넣는 방식으로 코드를 작성했다.
제출 1. 통과
import sys
input = sys.stdin.readline
from collections import deque
def main():
n, m = map(int, input().split())
board = [list(map(int, list(input().strip()))) for _ in range(n)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
q = deque([(0, 0)])
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and board[nx][ny] == 1:
q.append((nx, ny))
board[nx][ny] = board[x][y] + 1
print(board[n-1][m-1])
if __name__ == '__main__':
main()