[LeetCode 542. 01 Matrix] [python] 4. 재귀 함수
https://leetcode.com/problems/01-matrix/
재귀함수 중급 문제인데 너무 오래걸렸다.
막상 짜고 보면 별거 없었는데....
class Solution(object):
def findzero(self, r, c):
if self.mat[r][c] == 0:
self.distanceMap[r][c] = 0
return self.distanceMap[r][c] + 1
if self.distanceMap[r][c] != 10000:
return self.distanceMap[r][c] + 1
self.distanceMap[r][c] = 10001
if(c > 0):
target_r = r
target_c = c-1
if self.distanceMap[target_r][target_c] != 10001:
findDistance = self.findzero(target_r, target_c)
if self.distanceMap[r][c] > findDistance:
self.distanceMap[r][c] = findDistance
if(c < self.len_c - 1):
target_r = r
target_c = c+1
if self.distanceMap[target_r][target_c] != 10001:
findDistance = self.findzero(target_r, target_c)
if self.distanceMap[r][c] > findDistance:
self.distanceMap[r][c] = findDistance
if(r > 0):
target_r = r-1
target_c = c
if self.distanceMap[target_r][target_c] != 10001:
findDistance = self.findzero(target_r, target_c)
if self.distanceMap[r][c] > findDistance:
self.distanceMap[r][c] = findDistance
if(r < self.len_r - 1):
target_r = r+1
target_c = c
if self.distanceMap[target_r][target_c] != 10001:
findDistance = self.findzero(target_r, target_c)
if self.distanceMap[r][c] > findDistance:
self.distanceMap[r][c] = findDistance
return self.distanceMap[r][c] + 1
def updateMatrix(self, matrix):
self.len_r = len(matrix)
self.len_c = len(matrix[0])
self.distanceMap = [[10000 for k in range(self.len_c)] for l in range(self.len_r)]
self.mat = matrix
for i in range(self.len_r):
for j in range(self.len_c):
self.distanceMap[i][j] = 10000
self.findzero(i, j)
return self.distanceMap
"""
:type matrix: List[List[int]]
:rtype: List[List[int]]
"""