|
์ฝ๋ ์์ฑํ๊ธฐ
from collections import deque
def solution(maps):
n, m=len(maps), len(maps[0])
dx=[1, -1, 0, 0]
dy=[0, 0, -1, 1]
visit=[[-1]*m for _ in range(n)]
q=deque()
q.append([0, 0])
visit[0][0]=1
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 maps[nx][ny]==1 :
if visit[nx][ny]==-1:
q.append([nx, ny])
visit[nx][ny]=visit[x][y]+1
return visit[n-1][m-1]
Python
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
1.
n, m์ ์ฐพ์ ๋ณ์์ ์ ์ฅํ๋ค.
2.
์ํ์ข์ฐ ์ด๋์ ์ํด dx, dy ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
a.
๋ฐฉ๋ฌธํ ์ขํ์ธ์ง ํ์
ํ๊ธฐ ์ํด visit[n][m] ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
b.
์ฒ์์์ํ๋ ์์น์ธ (0, 0)์์ ์์ํ๋ค.
visit[0][0]์ 1๋ก ์ด๊ธฐํ์ํจ๋ค.
deque์ (0, 0)์ ์ฝ์
ํ๋ค.
3.
deque์ ์ผ์ชฝ ์์๋ฅผ popํ๋ค.
a.
ํด๋น ์ขํ์์ ์ํ์ข์ฐ๋ก ์ด๋์ ํด๋ณธ๋ค.
b.
์ด๋ํ ์ขํ๊ฐ maps์ ๋ฒ์ ๋ด์ ์๊ณ ํ์ฌ ์ขํ๊ฐ ๋ฒฝ์ด ์๋๊ณ ๋ฐฉ๋ฌธํ ์ ์ด ์๋ ๊ฒฝ์ฐ
deque์ ์ด๋ํ ์ขํ๋ฅผ ์ฝ์
ํ๊ณ ํ์นธ ๋ ์ด๋ํ์ผ๋ฏ๋ก ํ์ฌ ์ขํ์์ +1ํ ๊ฐ์ผ๋ก ๊ฐฑ์ ํ๋ค.
4.
visit์ ๋ง์ง๋ง ์์น์ ๊ฐ์ ๋ฐํํ๋ฉด ์ด๋ํ ๊ฑฐ๋ฆฌ๊ฐ ๋ฐํ๋๋ค.