728x90
반응형
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
정답 code
#미로 탐색
from collections import deque
def bfs(x,y):
dx = [-1,1,0,0]
dy = [0,0,-1,1]
queue = deque()
queue.append((x,y))
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx <0 or nx>=n or ny<0 or ny >= m:
continue
if miro[nx][ny] == 0:
continue
if miro[nx][ny] == 1:
miro[nx][ny] = miro[x][y] + 1
queue.append((nx,ny))
return miro[n-1][m-1]
n, m = map(int,input().split())
miro = [list(map(int,input())) for _ in range(n)]
print(bfs(0,0))
이번문제는 전에도 많이 다뤘던 너비 우선탐색 bfs 유형의 문제였다.
주어진 입력을 받고 bnf함수를 만들어 구동하면 된다.
solution
deque를 이용하여 처음을 데큐에 추가한뒤에 좌표를 이동해가며 이동 가능한 좌표일때 해당 좌표에 전 좌표에서 1을 추가한다음 데큐에 다시 넣는다.
이런식으로 이동가능한 좌표를 너비 우선탐색으로 찾아가며 경우의수를 입력해준다.
데큐가 비어있게 되면 도착지점에 저장된 경우의수를 출력해준다.
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 2606번 : 바이러스 (by python 파이썬) bfs dfs 두가지 풀이 (0) | 2022.05.28 |
---|---|
[baekjoon] 백준 2579번 : 계단 오르기 (by python) (0) | 2022.05.27 |
[baekjoon]백준 1992번 : 쿼드트리 (by python 파이썬) 분할,재귀 (0) | 2022.05.22 |
[baekjoon] 1931번 : 회의실 배정 (by python) (0) | 2022.05.19 |
[baekjoon] 백준 1927번 : 최소 힙 (by python 파이썬) with heapq (0) | 2022.05.17 |