728x90
1. ๋ฌธ์ ์์ฝ ๋ฐ ํ์ด ๋ฐฉ์
(1, 1)์์ ์ถ๋ฐํ์ฌ (N, M) ์์น๋ก ์ด๋ํ ๋ ์ง๋์ผ ํ๋ ์ต์์ ์นธ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
- ์ต๋จ ๊ฑฐ๋ฆฌ = BFS: ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ๋์ผํ ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฅํ๋ BFS๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ฑฐ๋ฆฌ ์
๋ฐ์ดํธ: ๋ค์ ์นธ์ผ๋ก ์ด๋ํ ๋
ํ์ฌ ์นธ์ ๊ฐ + 1์ ์ ์ฅํ์ฌ ๋ฐฉ๋ฌธ ์ฌ๋ถ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋์์ ๊ด๋ฆฌํ๋ค.
2. ์ ์ฒด ์ฝ๋ (Python)
import sys
from collections import deque
input = sys.stdin.readline
# ๋ฐ์ดํฐ ์
๋ ฅ ์ ๋ฏธ๋ฆฌ intํ ๋ฆฌ์คํธ๋ก ๋ณํ (์ต์ ํ)
N, M = map(int, input().split())
graph = [list(map(int, input().strip())) for _ in range(N)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs():
queue = deque([(0, 0)])
while queue:
x, y = queue.popleft()
# ๋์ฐฉ์ง ๋๋ฌ ์ ๊ฒฐ๊ณผ ๋ฐํ
if x == N - 1 and y == M - 1:
return graph[x][y]
for k in range(4):
nx, ny = x + dx[k], j + dy[k] # ์ํ์ข์ฐ ํ์
if 0 <= nx < N and 0 <= ny < M and graph[nx][ny] == 1:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx, ny))
return -1
print(bfs())
3. ๐ ๊ณผ๊ฑฐ ํ์ด์ ๋น๊ต: ๋ฌด์์ด ๋ฌ๋ผ์ก๋?
์์ ์ ์์ฑํ๋ ํ์ด(ํฌ์คํ #132)๋ฅผ ๋ค์ ํ์ด๋ณด๋, ๊ทธ๋์ ์ง๊ธ์ ์ ๊ทผ ๋ฐฉ์์ ๊ฝค ํฐ ์ฐจ์ด๊ฐ ๋๊ปด์ก๋ค.
- ๊ตฌํ์ ์๋ จ๋: ์์ ์๋ ๋ก์ง์ ์ง๋ฉด์ ๊ฝค ๋ฒ๋ฒ ๊ฑฐ๋ ธ๋ ๊ธฐ์ต์ด ๋๋๋ฐ, ์ง๊ธ์ BFS์ ํ๋ฆ์ ๋ช ํํ ์ดํดํ๊ณ ์์ด ๋งํ์์ด ์์ํ๊ฒ ํ ์ ์์๋ค.
- ํจ์จ์ฑ(Performance) ๊ณ ๋ ค: ์์ ์ฝ๋๋ ๋จ์ํ '์ ๋ต์ ๋งํ๋ ๊ฒ'์ ๊ธ๊ธํด ๋ฐ์ดํฐ ํ์ ๋ณํ์ด๋ ์ฐ์ฐ ๋น์ฉ์ ์ ํ ์ ๊ฒฝ ์ฐ์ง ์์ ๊ฒ ๋ณด์๋ค. ์ด๋ฒ์๋ ์ ๋ ฅ ๋จ๊ณ์์ ๋ฏธ๋ฆฌ int ๋ณํ์ ์ฒ๋ฆฌํ๋ ๋ฑ ๋ฏธ์ธํ ์ฑ๋ฅ๊น์ง ๊ณ ๋ คํ๋ฉฐ ์ฝ๋๋ฅผ ์งฐ๋ค.
- ์์ธ ์ค๋ช ์ฐธ๊ณ : ์๋ฆฌ์ ๋ํ ์์ฃผ ๊ธฐ์ด์ ์ธ ์ค๋ช ์ ์์ ํฌ์คํ (#132)์ ๋ ์์ธํ ์ ํ ์์ง๋ง, ์ ์ฒด์ ์ธ ์ฝ๋์ ํ๋ฆฌํฐ๋ ํ์คํ ์ง๊ธ์ด ๋ ๋์์ง ๊ฒ ๊ฐ๋ค.
4. โ๏ธ ํ๊ณ : ๊ฒฌ๊ณ ํ ์ฝ๋ ์์ฑํ๊ธฐ
โ ๋ฐ์ดํฐ ํ์ ์ต์ ํ์ ์ค์์ฑ
ํ์ ๋ฃจํ ๋ด๋ถ์์ ๋งค๋ฒ int() ํ๋ณํ์ ํ๋ ๊ฒ์ ๋ถํ์ํ ๋ถํ๋ฅผ ์ค๋ค. ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์ ์ด๋ฅผ ์ด๊ธฐ์ ์ฒ๋ฆฌํ๋๋ก ๋ฐ๊พผ ๊ฒ๋ง์ผ๋ก๋ ํจ์ฌ ๊น๋ํ ์ฝ๋๊ฐ ๋์๋ค.
๐ก ๋ฐฐ์ด ์
- BFS๋ ํ์์ ๋จผ์ ๋์ค๋ ๊ฒฝ๋ก๊ฐ ๋ฐ๋์ ์ต๋จ์์ ๋ณด์ฅํ๋ค.
- ๋ฏธ๋ก๊ฐ ๋งํ ๋์ฐฉํ์ง ๋ชปํ๋ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด
return -1์ฒ๋ฆฌ๋ฅผ ์ต๊ดํํ์.
728x90
'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ] 11724. ์ฐ๊ฒฐ ์์์ ๊ฐ์ (Python/DFS/Silver 2) (0) | 2026.04.03 |
|---|---|
| [BOJ] 2667. ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (Python/DFS/Silver 1) (0) | 2026.04.03 |
| [BOJ] 1303. ์ ์ - ์ ํฌ (Python/๊ทธ๋ํํ์/Silver 1) (0) | 2024.11.16 |
| [BOJ] 5212. ์ง๊ตฌ ์จ๋ํ (Python/๊ตฌํ/Silver 2) (0) | 2024.11.07 |
| [BOJ] 5635. ์์ผ (Python/๊ตฌํ/Silver 5) (0) | 2024.11.06 |