|
์ฝ๋ ์์ฑํ๊ธฐ
from collections import deque
def bfs(maps):
q = deque()
q.append((0,0))
directions = [(1,0), (-1,0), (0,1), (0,-1)]
while q:
x, y = q.popleft()
for dx, dy in directions:
nx = x + dx
ny = y + dy
if nx < 0 or nx >= len(maps) or ny < 0 or ny >= len(maps[0]):
continue
if maps[nx][ny] == 1:
maps[nx][ny] = maps[x][y] + 1
q.append((nx,ny))
return maps
def solution(maps):
maps = bfs(maps)
result = maps[len(maps)-1][len(maps[0])-1]
if result == 1:
return -1
else:
return result
maps1 = [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]]
maps2 = [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]]
print(solution(maps1))
print(solution(maps2))
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
โข
bfs๋ก ์ง๋๋๊ณณ์ ๊ฐ +1์ ๋ํ๋ฉด์ ์ต์ข
์ ์ผ๋ก ๋ง์ง๋ง์ ๋งต์ ์๋ ์ซ์๋ฅผ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ถ๋ ฅ
โข
dfs๋ก ๊ตฌํํ ๋ ค๊ณ ํ์์ผ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ๋ณด๋จ ์ต์ข
๊น์ง ๊ฐ๋ ๊ธธ์ ๊ตฌํ๋๊ฒ์ผ๋ก ๋ฐ๋ณตํ์ฌ ๊ณ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ๋ค์ bfs๋ก ๊ตฌํํด์ผํ๋ค.