from collections import deque
# map의 1만을 통과하여map[0][0]에서 map[N][M]에 도달하는 최단경로의 값을 구하여라
# 단 자기 자신의 위칫값을 1로한다
def dfs(map,y,x):
queue = deque()
queue.append((y,x))
while queue:
#큐에서 xy값 꺼내기
y,x= queue.popleft()
row = [0,-1,0,1]
low = [1,0,-1,0]
# 자식노드 생성
for i in range(4):
yr = y + row[i]
xr = x + low[i]
# map 밖을 벗어날 경우 리턴
if xr<0 or yr<0 or xr>M or yr>N:
continue
# 조건 성립시 큐 구조에(x,y) 삽입
if map[yr][xr] == 1:
queue.append((yr,xr))
# 맵의 해당 위치에 +1을 하여 추가
map[yr][xr] == map[y][x] +1
#만약 값을 만족하면 map의 (N,M)값 리턴
if yr == N and xr == M:
print("최솟값은 {}".format(map[N][M]))
return
return map
map = [
[1,0,1,0,0,0],
[1,1,1,1,1,1],
[0,1,0,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1]
]
N=5
M=5
dfs(map,0,0)
#디버깅 후기 / map 내부값이 하나도 바뀌지 않았다
for i in map:
for l in i:
print(l)
알려주면 땡큐하겠습니다
파이썬은 call by reference 어케하냐
잘모르는데참조값을전달해야되지안나
아니믄 map을 함수위에선언해봐
ㅇㅋ 바로하러간다
Dfs에서 인자 map지우고
해당 댓글은 삭제되었습니다.
map값이 안바뀌어서 혹시몰라서 해봄 ㅋㅋ
해당 댓글은 삭제되었습니다.
맵 값 바꿔주는거징
== 뭐냐 시발