FloodFill
Published at 2021-08-03
class Solution:
def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]:
def changeValue(sr, sc):
if 0 <= sr < len(image) and 0 <= sc < len(image[0]):
if image[sr][sc] == flood:
image[sr][sc] = newColor
changeValue(sr + 1, sc)
changeValue(sr - 1, sc)
changeValue(sr, sc + 1)
changeValue(sr, sc - 1)
flood = image[sr][sc] # 맨 처음 타겟된 숫자, 앞으로 이 숫자랑 같으면 바꿔줄거임
if flood == newColor:
return image
changeValue(sr, sc)
return image /**
* @param {number[][]} image
* @param {number} sr
* @param {number} sc
* @param {number} newColor
* @return {number[][]}
*/
var floodFill = function (image, sr, sc, newColor) {
const num = image[sr][sc]; // 기준 숫자. 이거랑 같으면 바꿔줄거
const rowLen = image.length;
const colLen = image[0].length;
const changeVal = (i, j) => {
if (i === -1 || i === rowLen) return;
if (j === -1 || j === colLen) return;
if (image[i][j] !== num) return;
image[i][j] = newColor;
changeVal(i - 1, j); //위
changeVal(i, j + 1); //오
changeVal(i + 1, j); // 밑
changeVal(i, j - 1); // 왼
};
if (newColor === num) return image; // 바꿀값이 없으면 그대로 리턴
changeVal(sr, sc);
return image;
};