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]]
        """

Posted by 공놀이나하여보세
,