TopCoder SRM 631 Div1 Easy: TaroJiroGrid
コード
public class TaroJiroGrid { public int getNumber(String[] grid) { int N = grid.length; char[][] map = new char[N][]; for (int i = 0; i < map.length; i++) { map[i] = grid[i].toCharArray(); } if (check(map)) { return 0; } char[] color = { 'W', 'B' }; for (int c = 0; c < 2; c++) { for (int i = 0; i < N; i++) { char[][] copy = new char[N][N]; for (int j = 0; j < N; j++) { for (int k = 0; k < N; k++) { if (j != i) { copy[j][k] = map[j][k]; } else { copy[j][k] = color[c]; } } } if (check(copy)) { return 1; } } } return 2; } private boolean check(char[][] map) { int N = map.length; for (int i = 0; i < N; i++) { int cnt = 1; for (int j = 1; j < N; j++) { if (map[j][i] == map[j - 1][i]) { cnt++; } else { cnt = 1; } if (cnt > N / 2) { return false; } } } return true; } }