2020. 8. 25. 20:22ใ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค/DFS,BFS
BFS ๋ฌธ์ (๋ฏธ๋ก ํ์ถ) - ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค
๋๋น์ด๋ N x M ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ ํํ์ ๋ฏธ๋ก์ ๊ฐํ ์๋ค. ๋ฏธ๋ก์๋ ์ฌ๋ฌ ๋ง๋ฆฌ์ ๊ดด๋ฌผ์ด ์์ด ์ด๋ฅผ ํผํด ํ์ถํด์ผ ํ๋ค. ๋๋น์ด์ ์์น๋ (1,1)์ด๊ณ ๋ฏธ๋ก์ ์ถ๊ตฌ๋ (N,M)์ ์์น์ ์กด์ฌํ๋ฉฐ ํ๋ฒ์ ํ ์นธ์ฉ ์ด๋ํ ์ ์๋ค. ์ด๋ ๊ดด๋ฌผ์ด ์๋ ๋ถ๋ถ์ 0์ผ๋ก, ๊ดด๋ฌผ์ด ์๋ ๋ถ๋ถ์ 1๋ก ํ์๋์ด ์๋ค. ๋ฏธ๋ก๋ ๋ฐ๋์ ํ์ถํ ์ ์๋ ํํ๋ก ์ ์๋๋ค. ์ด๋ ๋๋น์ด๊ฐ ํ์ถํ๊ธฐ ์ํด ์์ง์ฌ์ผ ํ๋ ์ต์ ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํ์์ค. ์นธ์ ์ ๋๋ ์์์นธ๊ณผ ๋ง์ง๋ง ์นธ์ ๋ชจ๋ ํฌํจํด์ ๊ณ์ฐํ๋ค.
์ ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ ์ ์ N, M(4 <= M, M<= 200)์ด ์ฃผ์ด์ง๋๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๊ฐ๊ฐ M๊ฐ์ ์ ์(0 ํน์ 1)๋ก ๋ฏธ๋ก์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์๋ค์ ๊ณต๋ฐฑ ์์ด ๋ถ์ด์ ์ ๋ ฅ์ผ๋ก ์ ์๋๋ค. ๋ํ ์์ ์นธ๊ณผ ๋ง์ง๋ง ์นธ์ ํญ์ 1์ด๋ค.
์ถ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ์ต์ ์ด๋ ์นธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์
๋ ฅ ์์ 5 6 101010 111111 000001 111111 111111 |
์ถ๋ ฅ ์์ 10 |
์ด ๋ฌธ์ ๋ ์ต์ ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. DFS๋ก๋ ์ต์ ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํ ์ ์์๊น? ํ์๊ฐ ๋ณด๊ธฐ์๋ ํ๋ค์ด ๋ณด์ธ๋ค. ๊น์ด ์ฐ์ ํ์์ด๊ธฐ ๋๋ฌธ์ ์ต์์ ์๊ด์์ด ๊น์ด๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ด๋ฐ ์ ํ์ ๋ฌธ์ ๋ BFS๋ฅผ ์ด์ฉํ๋ค. BFS๋ฅผ ์ด์ฉํ๋ฉด ๋๋น ์ฐ์ ํ์์ด๊ธฐ ๋๋ฌธ์ ์ฒ์ฒํ ๋ชจ๋ ๊ณณ์ ํ์ํ๊ฒ ๋๋ค. ์ฒซ๋ฒ์งธ ์์ด๋์ด๋ BFS๋ก ์์ํ๋ค.
๋ฌธ์ ๋ฅผ BFS๋ก ํ์ด์ผ๊ฒ ๋ค๋ ๊ฒ์ ์๊ฒ ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ์์ผ๋ก ๊ตฌํํด์ผ ํ ๊น?
๋ฌธ์ ์์ ์ฒ์์ (1,1)๋ถํฐ ์์ํ๋ค๊ณ ๋ช ์๋์ด์๊ธฐ ๋๋ฌธ์ ์ด๊ณณ๋ถํฐ (x-1,y), (x+1,y), (x,y-1), (x,y+1)์ด๋ํ ๊ฐ์ ๊ธฐ์กด์ ๊ฐ์ +1์ ํด์ฃผ๋ฉด ๋๋ค. ํ๋ฅผ ์ด์ฉํ์ฌ ์ด ์ขํ๋ค์ ๋ฃ๋๋ค๋ฉด, ํ์ ๋ค์ด๊ฐ ๊ฒ๋ค๋ถํฐ ํ์์ด ๋๊ธฐ ๋๋ฌธ์ ์์ฐจ์ ์ผ๋ก ๊ฐ๊ฐ์ ๊ธธ์ ๋ํ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ ์๋ค.
์ฝ๋๋ก ํ์ธํด๋ณด์.
from collections import deque
n,m = map(int,input().split())
graph = []
for i in range(n):
graph.append(list(map(int,input())))
def bfs(x,y):
queue = deque()
queue.append((x,y))
dx = [-1,1,0,0]
dy = [0,0,-1,1]
while queue:
x,y = queue.popleft
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx <=-1 or ny <=-1 or nx >=n or ny >=m:
continue
if graph[nx][ny] == 0:
continue
if graph[nx][ny] == 1:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx,ny))
return graph[n-1][m-1]
print(bfs(0,0))
๋ฌธ์ ๋ 1,1๋ถํฐ ์์ํ๋ค๊ณ ํ๋๋ฐ, ์ print์์๋ 0,0์ด ๋ค์ด๊ฐ๊น? ๋ฌธ์ ์์ 1,1์ ์ค์ ๋ฐฐ์ด์์์ 0,0๊ณผ ๊ฐ๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ค์ ์ต์๊ฑฐ๋ฆฌ๋ฅผ ์๊ธฐ ์ํด์๋ 0,0์ ์ง์ด๋ฃ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๋ค.
'์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DFS๋ฌธ์ (์๋ฃ์ ์ผ๋ ค ๋จน๊ธฐ) - ์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค (0) | 2020.08.25 |
---|---|
DFS(๊น์ด ์ฐ์ ํ์), BFS(๋๋น ์ฐ์ ํ์) (0) | 2020.08.25 |