N,M = map(int, sys.stdin.readline().split()) MAX =sys.maxsize mp = [[MAX]*(M+1) for _ inrange(N+1)]
for n inrange(1,N+1): cnt=1 for m inlist(map(int,sys.stdin.readline().rstrip())): mp[n][cnt]=m cnt+=1 ans=[] defsolve(x,y,count): if x==N and y==M: ans.append(count) return if x==0or y==0or x==N+1or y==M+1: return if mp[x][y]==0or mp[x][y]==2: return elif mp[x][y]==1: mp[x][y]=2 solve(x, y+1, count+1) solve(x+1, y, count+1) solve(x, y-1, count+1) solve(x-1, y, count+1) solve(1, 1,1) print(min(ans))
위의 코드는 틀린 코드이다. 재귀 함수를 이용해서 탐색해서 목적지에 도달했을 때의 카운트를 추가하도록 했다.