| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | import java.util.Scanner;public class Painter {    private static int N = 0, M = 0;    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        N = scanner.nextInt();        M = scanner.nextInt();        scanner.nextLine(); // !!important        char[][] board = new char[N][M];        for (int i = 0; i < N; i++) {            board[i] = scanner.nextLine().toCharArray();        }        int cnt = 0;        for (int i = 0; i < N; i++) {            for (int j = 0; j < M; j++) {                switch (board[i][j]) {                    case 'G':                        cnt++;                        dfs(board, j, i, 1, 1, 'Y', 'B');                    case 'B':                        cnt++;                        dfs(board, j, i, 1, -1, 'B', 'Y');                        break;                    case 'Y':                        cnt++;                        dfs(board, j, i, 1, 1, 'Y', 'B');                        break;                    default:                        break;                }            }        }        System.out.println(cnt);        scanner.close();    }    private static void dfs(char[][] board, int x, int y, int dx, int dy, char curr, char next) {        if (x < 0 || M <= x || y < 0 || N <= y || board[y][x] == 'X' || board[y][x] == next) return;        if (board[y][x] == curr) {            board[y][x] = 'X';        } else if (board[y][x] == 'G') {            board[y][x] = next;        }        dfs(board, x+dx, y+dy, dx, dy, curr, next);        dfs(board, x-dx, y-dy, dx, dy, curr, next);    }}
 |