https://www.acmicpc.net/problem/2178
2178๋ฒ: ๋ฏธ๋ก ํ์
์ฒซ์งธ ์ค์ ๋ ์ ์ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ M๊ฐ์ ์ ์๋ก ๋ฏธ๋ก๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์๋ค์ ๋ถ์ด์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
www.acmicpc.net
from collections import deque
#๋ฏธ๋ก ์ ๋ณด ์
๋ ฅ๋ฐ๊ธฐ
n, m = map(int,input().split())
graph=[]
for i in range(n):
graph.append(list(map(int,input())))
#์ํ์ข์ฐ ์ขํ
dx=[-1,1,0,0]
dy=[0,0,-1,1]
#(0,0) ์์์ ์ผ๋ก bfs ์ํ
q=deque()
q.append((0,0))
while q:
x,y = q.popleft()
#์ํ์ข์ฐ ์ธ์ ํ ์นธ ์ฒดํฌ
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
#nx, ny๊ฐ ๋ฏธ๋ก ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๊ณ , ๋ฐฉ๋ฌธํ ์ ์๋ ๋
ธ๋์ผ ๋
if 0<=nx<n and 0<=ny<m and graph[nx][ny]==1:
graph[nx][ny] = graph[x][y] + 1
q.append((nx,ny))
print(graph[n-1][m-1])
bfs๋ก ์ํํ๋, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ์ ์นธ์ ๊ฐ์ count๋ฅผ ๋์์ ํด์ฃผ๋ฉด ๋๋ค!
์๋ฅผ ๋ค์ด ์ด๋ ๊ฒ ์๊ธด ๋ฏธ๋ก๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
1 | 0 | 0 |
1 | 1 | 1 |
0 | 0 | 1 |
์์์ (0,0)์์์ ์ด๋ ์นธ์ ๊ฐ์๋ 1์ด๋ค.
์ธ์ ํ ์นธ ์ค ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ์นธ์ (1,0)์ธ๋ฐ, ((1,0)๊น์ง์ ์ด๋ ์นธ์ ๊ฐ์)๋ ((0,0)๊น์ง์ ์ด๋ ์นธ ๊ฐ์) + 1 =2์ด๋ค.
(1,0)์ ์์์ ์ผ๋ก bfs๋ฅผ ๋๋ค์ ์ํํ๋ฉด (1,1)์ ๋ฐฉ๋ฌธํ ์ ์๋ค.
(1,1)๊น์ง์ ์ด๋ ์นธ์ ๊ฐ์๋ ((1,0)๊น์ง์ ์ด๋ ์นธ์ ๊ฐ์) + 1 = 3์ด๋ค.
์ด๋ฐ์์ผ๋ก bfs๋ฅผ ์ํํ๋ฉด์ ์ด๋ ์นธ์ ๊ฐ์๋ฅผ updateํด์ฃผ๋ฉด ๋ฐฉ๋ฌธ์ฒ๋ฆฌ์ ์ด๋ ์นธ ๊ฐ์ ์ธ๋ ์ผ์ ํ ๋ฒ์ ํด๊ฒฐํ ์ ์๋ค.
graph[i][j]==0์ด๋ฉด ๋ฐฉ๋ฌธํ ์ ์๋ ์นธ
graph[i][j]==1์ด๋ฉด ๋ฐฉ๋ฌธํ ์ ์๋ ์นธ์ด๋ค. --> updateํด์ฃผ๊ธฐ
graph[i][j]>1์ด๋ฉด ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ ์นธ์ด๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]10026๋ฒ: ์ ๋ก์์ฝ (0) | 2023.02.24 |
---|---|
[๋ฐฑ์ค]4963๋ฒ: ์ฌ์ ๊ฐ์ (0) | 2023.02.23 |
[์ด์ฝํ ] ์๋ฃ์ ์ผ๋ ค ๋จน๊ธฐ (1) | 2023.02.23 |
dfs, bfs ํ์ด์ฌ ๊ตฌํ (0) | 2023.02.23 |
[๋ฐฑ์ค]2644๋ฒ: ์ด์๊ณ์ฐ (0) | 2023.02.18 |