반응형

 문제

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


이런경우 bfs를 써야 풀수 있다.

dfs의 경우에는 미로의 경로가 가장 짧다고 말할 수 없다.

코드는 이전 bfs와 다르지않다. 해당 노드까지의 최소 칸수를 적어주는것 외에는 동일

하다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import sys
from collections import deque
 
 
def find_maze(start_row,start_colume,N,M):#bfs를 통해 찾기
    q=deque()
    q.append([start_row,start_colume])
    dx=[1,-1,0,0]
    dy=[0,0,-1,1]
    while q:
        [x, y] = q.popleft()
        for i in range(4):#네군데 큐담기
            nx=x+dx[i]
            ny=y+dy[i]
            if 0<=nx<and 0<=ny<and matrix[nx][ny]==1:#한번도 방문하지않았다면
                #이전에 방문하였다면 최솟값은 이전값이다.
                q.append([nx,ny])
                matrix[nx][ny]+=matrix[x][y]#해당노드까지의 칸수
 
 
 
 
N,M=map(int,sys.stdin.readline().split())
 
matrix=[]
 
for i in range(N):
    str=sys.stdin.readline()
    tmp=[]
    for i in range(M):
        tmp.append(int(str[i]))
    matrix.append(tmp)
 
 
find_maze(0,0,N,M)
print(matrix[N-1][M-1])
 

cs


반응형

'알고리즘(python) > 탐색' 카테고리의 다른 글

[Python]DFS와BFS 백준 7569  (0) 2020.02.15
[Python]DFS와BFS 백준 7576  (0) 2020.02.14
[Python]DFS와BFS 백준 1012  (0) 2020.02.13
[Python]DFS와BFS 백준 2667  (0) 2020.02.13
[Python]DFS와BFS 백준 2606  (0) 2020.02.13
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기