코테/BOJ
백준 2178 [미로 탐색] 파이썬
동 캄
2023. 3. 20. 12:53
반응형
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
#백준 2178 미로 탐색
import sys
input=sys.stdin.readline
dr=[1,0,-1,0] #위 아래
dc=[0,-1,0,1] # 좌 우
N,M=map(int,input().split())
maze=[]
for _ in range(N):
maze.append(list(map(int,input().rstrip()))) # 미로 값 저장
def bfs(start,maze):
visited=[[0]*M for _ in range(N)] #방문 값을 0으로 초기화
start_r,start_c=start #시작 행,렬 받음
visited[start_r][start_c]=1 # 시작 행 렬을 1로 초기화
q=[]
q.append([start_r,start_c]) #큐에 추가
while q:
r,c=q.pop(0) #큐에서 뺌
if r==N-1 and c==M-1: #도착하면
return visited[r][c] #최종 거리를 리턴
for i in range(4): #상하좌우로 탐색
R=r+dr[i]
C=c+dc[i]
if 0<=R<N and 0<=C<M and maze[R][C]==1 and visited[R][C]==0: #미로 안에 있는지 탐색 & 갈 수 있는 길인지 & 방문했는지 탐색
visited[R][C]=visited[r][c]+1 #거리를 갱신 (visted 이용)
q.append([R,C]) #큐에 추가
# for val in visited:
# print(val)
# print()
ans=bfs([0,0],maze)
print(ans)
bfs를 이용해서 해결하려고 하는데, 도저히 안풀렸다.
큐에서 값을 빼낼 때 pop()을 계속 사용했던 것이다.
pop() 과 pop(0)은 엄연히 다른데 말이다...
반응형