작성
·
178
0
선생님께선 bottom-up방식이셨네요... 전 처음에풀때 top-down방식으로 한번 해보았습니다. 혹시 이런방식도 가능한지 여쭤보고싶습니다~
def DFS(x,y):
if x == n-1:
if a[x][y] == 2:
print(sp)
return
else:
cnt = 0
a[x][y] = 0
// 갈림길 조정 - 만약에 아래로뻗는 방향밖에없다면 그대로 좌우아래 검색, 만약 아래랑 좌우중 한개가 같이있을경우 무조건 좌우만 검색하게끔
for j in range(3):
tx = x+dx[j]
ty = y+dy[j]
if 0<=tx<n and 0<=ty<n and (a[tx][ty] == 1 or a[tx][ty] == 2):
cnt += 1
if cnt == 1:
loop = 3
else:
loop = 2
for j in range(loop):
tx = x+dx[j]
ty = y+dy[j]
if 0<=tx<n and 0<=ty<n and (a[tx][ty] == 1 or a[tx][ty] == 2):
DFS(tx, ty)
a[tx][ty] = 1
for z in a:
print(z)
print()
n = 10
a = [
[1,0,1,0,0,1,0,1,0,1],
[1,0,1,1,1,1,0,1,0,1],
[1,0,1,0,0,1,0,1,0,1],
[1,0,1,0,0,1,0,1,1,1],
[1,0,1,0,0,1,0,1,0,1],
[1,0,1,1,1,1,0,1,0,1],
[1,0,1,0,0,1,0,1,1,1],
[1,1,1,0,0,1,0,1,0,1],
[1,0,1,0,0,1,1,1,0,1],
[1,0,1,0,0,2,0,1,0,1]
]
dx = [0, 0, 1]
dy = [1, -1, 0]
sp = 0
for i in range(len(a[0])):
if a[0][i] == 1:
sp = i
print(sp)
a[0][i] = 0
DFS(0,i)