[BOJ] 2178. ๋ฏธ๋กํ์(python)
๐๋ฌธ์
๐ช์์ด๋์ด
๋งต ๋ง๋ค๊ธฐ
์ขํ๊ฐ 1,1๋ถํฐ ์์ํ๋ค.์ธ๋ฑ์ค์กฐ์ ์ ํ๋ ๋ฒ๊ฑฐ๋ฌ์์ ์ค์ฌ์ผํ๊ธฐ ๋๋ฌธ์ ํ 1์ค๊ณผ ์ด1์ค์ ๋ฏธ๋ฆฌ ๋ฃ์ด์ฃผ๊ณ ์ ๋ ฅ๊ฐ์ ๋ฃ์ด์ค๋ค.(N,M)๊น์ง ์ด๋ํ๊ธฐ
์ธ์ ํ ๊ณณ๋ง ์์ง์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ํ์ข์ฐ๋ก๋ง ์ด๋์ด ๊ฐ๋ฅํ๋ค.(dy,dx๋ก ์ค์ ) y,x์ขํ๊ฐ 1์ด์ n, m์ดํ์ผ๋ ์ด๋์ด ๊ฐ๋ฅํ๊ณ ๊ณผ๊ฑฐ์ ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ๋ง ์ด๋ํ๋๋ก ํ๋ค. (bfs์ฌ์ฉ)๋์ฐฉ์ง๊น์ง ์ง๋๋ ์ต์์ ์นธ ์
์์ง์ผ ๋๋ง๋ค cnt๋ฅผ ์ธ์ ๋ชฉํ์ ๋์ฐฉํ๋ฉด cnt๋ฅผ ๋ฐํํ๋๋ก ํ์๋ค. bfs๋ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์ผ ์ฒ์ ๋์ฐฉ์ง์ ๋์ฐฉํ ๋๊ฐ ์ต์๊ฑฐ๋ฆฌ์ด๋ค.
๐ฅ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys
from collections import deque
input = sys.stdin.readline
def move(x,y):
dy = (1,0,-1,0)
dx = (0,1,0,-1)
visited = [[False for _ in range(m+1)] for _ in range(n+1)]
queue = deque()
queue.append((y,x,1))
visited[y][x] = True
while queue:
ny,nx,nxt_cnt = queue.popleft()
if ny==n and nx==m: return nxt_cnt
for i in range(4):
ey = ny + dy[i]
ex = nx + dx[i]
if 1 <= ey <= n and 1 <= ex <= m:
if board[ey][ex]==1 and not visited[ey][ex]:
visited[ey][ex]=True
queue.append((ey,ex,nxt_cnt+1))
n,m = map(int,input().split())
board=[]
board.append([0]*(m+1))
for _ in range(n):
li=[0]
tmp = input().rstrip()
for i in tmp:
li.append(int(i))
board.append(li.copy())
print(move(1,1))
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.