// 방향 벡터: 상, 하, 좌, 우
private static final int[] dx = {-1, 1, 0, 0};
private static final int[] dy = {0, 0, -1, 1};
public static void floodFill(char[][] grid, int x, int y, char target, char replacement) {
// 경계 체크 및 이미 방문한 경우 또는 목표 값이 아닌 경우 리턴
if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length) return;
if (grid[x][y] != target) return;
// 현재 위치의 값을 대체 값으로 변경
grid[x][y] = replacement;
// 인접한 4방향을 탐색
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
floodFill(grid, nx, ny, target, replacement);
}
}