๐กsolutions )
๐ฌ ๋จ์ ๋ค์ต์คํธ๋ผ(Dijkstra) ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐํ ๋ฌธ์ , ํด๋น ๋ฌธ์ ์์ ๋ ธ๋์ ๋น์ฉ์ ํด๋นํ๋ ๊ฒ์ ๋ฒฝ์ ๋ถ์ ํ์(cnt)
๐ฌ BFS๋ก๋ ๋ฐฉ๋ฌธ ์ค๋ณต์ผ๋ก ํ์ฌ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์
๐ซcode )
import sys
import heapq
def dijkstra():
heap = []
heapq.heappush(heap, [0, 0, 0]) # ์์์
visit[0][0] = 1
while heap:
cnt, x, y = heapq.heappop(heap) # ๋ฒฝ ๋ถ์ ํ์๊ฐ ์ต์์ธ ๊ฒฝ์ฐ๊ฐ ๋์ด
for k in range(4):
nx, ny = x + dx[k], y + dy[k]
if x == n - 1 and y == m - 1: # ์ข
๋ฃ์กฐ๊ฑด
print(cnt)
break
if 0 <= nx < n and 0 <= ny < m and not visit[nx][ny]:
visit[nx][ny] = 1
if maze[nx][ny]: # ๋ฒฝ์ธ ๊ฒฝ์ฐ
heapq.heappush(heap, [cnt + 1, nx, ny])
else: # ๋น๋ฐฉ์ธ ๊ฒฝ์ฐ
heapq.heappush(heap, [cnt, nx, ny])
input = sys.stdin.readline
m, n = map(int, input().rstrip().split(' '))
maze = [list(map(int, input().rstrip())) for _ in range(n)]
visit = [[0] * m for _ in range(n)]
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
dijkstra()
๐ description )
๋ฌธ์ ์ถ์ฒ : www.acmicpc.net/problem/1261
๋ฌธ์ ์๊ณ ์คํ ์ด์์ง์ด ๋ชจ๋ ๋ฏธ๋ก์ ๊ฐํ๋ค. ๋ฏธ๋ก๋ N*M ํฌ๊ธฐ์ด๋ฉฐ, ์ด 1*1ํฌ๊ธฐ์ ๋ฐฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๋ฏธ๋ก๋ ๋น ๋ฐฉ ๋๋ ๋ฒฝ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๋น ๋ฐฉ์ ์์ ๋กญ๊ฒ ๋ค๋ ์ ์์ง๋ง, ๋ฒฝ์ ๋ถ์์ง ์์ผ๋ฉด ์ด๋ํ ์ ์๋ค. ์๊ณ ์คํ ์ด์์ง์ ์ฌ๋ฌ๋ช ์ด์ง๋ง, ํญ์ ๋ชจ๋ ๊ฐ์ ๋ฐฉ์ ์์ด์ผ ํ๋ค. ์ฆ, ์ฌ๋ฌ ๋ช ์ด ๋ค๋ฅธ ๋ฐฉ์ ์์ ์๋ ์๋ค. ์ด๋ค ๋ฐฉ์์ ์ด๋ํ ์ ์๋ ๋ฐฉ์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋น ๋ฐฉ์ด๋ค. ์ฆ, ํ์ฌ ์ด์์ง์ด (x, y)์ ์์ ๋, ์ด๋ํ ์ ์๋ ๋ฐฉ์ (x+1, y), (x, y+1), (x-1, y), (x, y-1) ์ด๋ค. ๋จ, ๋ฏธ๋ก์ ๋ฐ์ผ๋ก ์ด๋ ํ ์๋ ์๋ค. ๋ฒฝ์ ํ์์๋ ์ด๋ํ ์ ์์ง๋ง, ์๊ณ ์คํ์ ๋ฌด๊ธฐ AOJ๋ฅผ ์ด์ฉํด ๋ฒฝ์ ๋ถ์์ด ๋ฒ๋ฆด ์ ์๋ค. ๋ฒฝ์ ๋ถ์๋ฉด, ๋น ๋ฐฉ๊ณผ ๋์ผํ ๋ฐฉ์ผ๋ก ๋ณํ๋ค. ๋ง์ฝ ์ด ๋ฌธ์ ๊ฐ ์๊ณ ์คํ์ ์๋ค๋ฉด, ์ด์์ง๋ค์ ๊ถ๊ทน์ ๋ฌด๊ธฐ sudo๋ฅผ ์ด์ฉํด ๋ฒฝ์ ํ ๋ฒ์ ๋ค ์์ ๋ฒ๋ฆด ์ ์์ง๋ง, ์ํ๊น๊ฒ๋ ์ด ๋ฌธ์ ๋ Baekjoon Online Judge์ ์๋ก๋์ด ์๊ธฐ ๋๋ฌธ์, sudo๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ํ์ฌ (1, 1)์ ์๋ ์๊ณ ์คํ ์ด์์ง์ด (N, M)์ผ๋ก ์ด๋ํ๋ ค๋ฉด ๋ฒฝ์ ์ต์ ๋ช ๊ฐ ๋ถ์์ด์ผ ํ๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ์ฒซ์งธ ์ค์ ๋ฏธ๋ก์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ๋ก ํฌ๊ธฐ M, ์ธ๋ก ํฌ๊ธฐ N (1 ≤ N, M ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๋ฏธ๋ก์ ์ํ๋ฅผ ๋ํ๋ด๋ ์ซ์ 0๊ณผ 1์ด ์ฃผ์ด์ง๋ค. 0์ ๋น ๋ฐฉ์ ์๋ฏธํ๊ณ , 1์ ๋ฒฝ์ ์๋ฏธํ๋ค. (1, 1)๊ณผ (N, M)์ ํญ์ ๋ซ๋ ค์๋ค. ์ถ๋ ฅ์ฒซ์งธ ์ค์ ์๊ณ ์คํ ์ด์์ง์ด (N, M)์ผ๋ก ์ด๋ํ๊ธฐ ์ํด ๋ฒฝ์ ์ต์ ๋ช ๊ฐ ๋ถ์์ด์ผ ํ๋์ง ์ถ๋ ฅํ๋ค. |
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2979๋ฒ / ํธ๋ญ ์ฃผ์ฐจ / ํ์ด์ฌ / Python (0) | 2021.10.07 |
---|---|
[๋ฐฑ์ค] 1173๋ฒ / ์ด๋ / ํ์ด์ฌ / Python (0) | 2021.10.06 |
[๋ฐฑ์ค] ์ต์๋น์ฉ ๊ตฌํ๊ธฐ / 1916๋ฒ / ํ์ด์ฌ / python (0) | 2020.12.05 |
[๋ฐฑ์ค] ์จ๋ฐ๊ผญ์ง / 1697๋ฒ / ํ์ด์ฌ / python (0) | 2020.12.04 |
[๋ฐฑ์ค] 1๋ก ๋ง๋ค๊ธฐ / 1463๋ฒ / ํ์ด์ฌ / Python (0) | 2020.12.03 |