ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ BFS
thinking
์ต์ ์นธ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก bfs๋ก ํด๊ฒฐํ์๊ณ ์๊ฐํ๋ค.
์ฝ๋
ํ์ด 1
visited๋ผ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด ํธ๋ ๋ฐฉ๋ฒ
from collections import deque
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def bfs():
global visited
q = deque() # ํ ๋ง๋ค๊ณ
q.append((0, 0)) # ์์์ ๋ฃ์ด์ฃผ๊ณ
visited[0][0] = 1 # ๊ฐ ๊ฐฑ์
while q: # ํ์ ๊ฐ์ด ์์ผ๋ฉด
x, y = q.popleft() # ๋งจ ์ผ์ชฝ ๊ฐ ๋นผ์ ํ ๋นํ๊ณ
for i in range(4): # ์ฌ๋ฐฉ ํ์ํ๋ฉด์
nx = x+dx[i]
ny = y+dy[i]
# ์ธ๋ฑ์ค๊ฐ ๋ฒ์ ์ด๋ด์ด๋ฉด์ ๋ฏธ๋ก์ ๊ฐ์ด 1์ด๊ณ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด
if 0<=nx<N and 0<=ny<M and a[nx][ny] == 1 and not visited[nx][ny]:
visited[nx][ny] = visited[x][y] + 1 # ๋ฐฉ๋ฌธ์ฒดํฌ(์ด์ ๊ฐ์ 1์ ๋ํ๋ฉด์ ๊ฐ ๊ฐฑ์ )
q.append((nx, ny)) # ํ์ ๋ฃ๋๋ค
N, M = map(int, input().split())
a = [list(map(int, input())) for _ in range(N)]
visited = [[0 for _ in range(M)] for _ in range(N)] # ๊ฐ ๊ฐฑ์ ํ 2์ฐจ์๋ฐฐ์ด
bfs()
print("{}".format(visited[N-1][M-1]))
# visited ์ถ๋ ฅ๊ฒฐ๊ณผ (testcase 1๋ฒ)
[
[1, 0, 9, 10, 11, 12],
[2, 0, 8, 0, 12, 0],
[3, 0, 7, 0, 13, 14],
[4, 5, 6, 0, 14, 15]
]
ํ์ด 2
์ ์ด์ ๋ฐ์ input 2์ฐจ์๋ฐฐ์ด(a) ์์ฒด๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ
์ด ๋ฐฉ๋ฒ์ผ๋ก ํ ๋๋ input ๋ฆฌ์คํธ๋ฅผ intํ์ผ๋ก ๋ฐ์ผ๋ฉด [0,0]์ ๊ฐ์ด 1์ด ์๋๊ณ ๊ฐฑ์ ๋๊ธฐ ๋๋ฌธ์ strํ์ผ๋ก ๋ฐ์ ์ฒ๋ฆฌํ๋ค.
(์ฌ์ค input ๋ฆฌ์คํธ๋ฅผ intํ์ผ๋ก ๋ฐ์์ ๋๋ ์ต์ข ๊ฒฐ๊ณผ๊ฐ์ ๋์ผํ๋ ๋ ์ ํํ ํ์ด๋ฅผ ์ํด strํ์ผ๋ก ํ์๋ค)
from collections import deque
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def bfs():
q = deque()
q.append((0, 0))
a[0][0] = 1 # ์์์ ์ ๊ฐ์ intํ์ผ๋ก ๊ฐฑ์ ํ๊ณ ์์
while q:
x, y = q.popleft()
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if 0<=nx<N and 0<=ny<M and a[nx][ny] == '1': # ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ๊ตณ์ด ์ํด๋ ๋๋ค.
a[nx][ny] = a[x][y] + 1
q.append((nx, ny))
N, M = map(int, input().split())
a = [list(input()) for _ in range(N)] # strํ์ผ๋ก ๋ฐ์
bfs()
print("{}".format(a[N-1][M-1]))
# a ์ถ๋ ฅ๊ฒฐ๊ณผ (testcase 1๋ฒ)
[
[1, '0', 9, 10, 11, 12],
[2, '0', 8, '0', 12, '0'],
[3, '0', 7, '0', 13, 14],
[4, 5, 6, '0', 14, 15]
]
# a๋ฅผ intํ์ผ๋ก ๋ฐ์์ ๋ ์ถ๋ ฅ๊ฒฐ๊ณผ
[
[3, 0, 9, 10, 11, 12],
[2, 0, 8, 0, 12, 0],
[3, 0, 7, 0, 13, 14],
[4, 5, 6, 0, 14, 15]
]
ํ์คํ
BFS๋ก ํ์๋ฉด์ ์ฒจ์ ์๋ฌด์๊ฐ์์ด DFS ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค ์ด์ด์๋ค
bfs๋ณด๋ค dfs๋ฅผ ์๋์ ์ผ๋ก ๋ง์ด ํ์ด์ ๊ทธ๋ฐ๊ฑฐ ๊ฐ๋ค
bfs๋ฅผ ์ข ๋ ๋ง์ด ํ์ด์ผ๊ฒ ๋ค
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1931๋ฒ. ํ์์ค ๋ฐฐ์ / python ํ์ด์ฌ (0) | 2021.06.02 |
---|---|
[๋ฐฑ์ค] 1780. ์ข ์ด์ ๊ฐ์ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 1764. ๋ฃ๋ณด์ก / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 1697. ์จ๋ฐ๊ผญ์ง / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 1676. ํฉํ ๋ฆฌ์ผ 0์ ๊ฐ์ / python ํ์ด์ฌ (0) | 2021.06.02 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- dp
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- 2018 ์นด์นด์ค ๊ณต์ฑ
- swea
- ๊ธฐ์ง๊ตญ์ค์น
- merge ์๋ฌ
- ์์ด๋๋ง์๊ธฐ
- git ๋ฏธ๋ฌ๋ง
- ์ผ์ฑ์ฝํ
- ๋ฐฑ์ค
- Python
- 21609 ์์ด ์คํ๊ต
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
- ๋ธ๋ฃจํธํฌ์ค
- react
- BFS
- merge์๋ฌ
- ์ผ์ฑ๊ธฐ์ถ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ๋ณด์์ผํ
- dfs
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ