본문 바로가기
Algorithm

[Algorithm][Graph][Java] 문제 풀이 #28 - 733. Flood Fill

by Lee David 2022. 8. 29.
반응형
문제 링크

https://leetcode.com/problems/flood-fill/

내 코드
int startPixel = 0;
public int[][] floodFill(int[][] image, int sr, int sc, int color) {
    if(!isInArrayIndex(image, sr, sc)) return image;

    startPixel = image[sr][sc];

    recursion(image, sr, sc, color);

    return image;
}

private void recursion(int[][] image, int sr, int sc, int color) {
    if(!isInArrayIndex(image, sr, sc)) return;
    else if(image[sr][sc] == color || image[sr][sc] != startPixel) return;

    image[sr][sc] = color;

    recursion(image, sr + 1, sc, color);
    recursion(image, sr - 1, sc, color);
    recursion(image, sr, sc + 1, color);
    recursion(image, sr, sc - 1, color);
}

private boolean isInArrayIndex(int[][] arr, int sr, int sc) {
    if(sr >= arr.length || sc >= arr[0].length) return false;
    else if(sr < 0 || sc < 0) return false;

    return true;
}
결과

이전 문제와 비슷한 문제지만 시작 인덱스가 주어지고 해당 인덱스 주변으로만 값을 계산하면 되기 때문에 난이도가 더 낮은 것으로 보이는것 같습니다.

필요 graph 문제는 조금 감이 잡혀가는듯 하네요.

반응형