반응형
https://www.acmicpc.net/problem/1261
1261번: 알고스팟
첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미
www.acmicpc.net
# 포인트
1. v=[[-1]*가로 for _ in range(세로)] 방문처리하는 리스트의 기본값을 -1로 놓고,
방문하지 않았을때는 -1, 방문해서 벽을 뚫지 않으면 +0, 벽을 뚫으면 +1 로 한번에 체크해주기
2. 벽을 부술 필요가 없을 경우, q.appendleft()해주어 먼저 탐색할 수 있도록
from collections import deque
m,n=map(int, input().split())
map=[list(map(int, input().strip())) for _ in range(n) ]
v=[[-1]*m for _ in range(n)]
q=deque([(0,0)])
v[0][0]=0
dy=[-1,0,1,0]
dx=[0,1,0,-1]
while q:
y,x=q.popleft()
for i in range(4):
ny=y+dy[i]
nx=x+dx[i]
if 0<=ny<n and 0<=nx<m and v[ny][nx]==-1:
if map[ny][nx]==0:
q.appendleft((ny, nx))
v[ny][nx]=v[y][x]
else :
q.append((ny, nx))
v[ny][nx]=v[y][x]+1
print(v[n-1][m-1])
반응형
'프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글
백준 2559 : 수열 with 파이썬 (2) | 2024.01.29 |
---|---|
백준 14497 : 주난의 난 with 파이썬 (0) | 2024.01.28 |
[프로그래머스] 게임 맵 최단거리 with 파이썬 : BFS (0) | 2024.01.25 |
[프로그래머스] 타겟넘버 with 파이썬 : BFS, 재귀함수 (0) | 2024.01.24 |
백준 2979 : 트럭주차 with 파이썬 (0) | 2024.01.23 |
댓글