SRM 655 Div. 1 Easy: BichromePainting (誤答)

嘘解法

左端から順番に見て、お手本に合うように塗っていき、最終形がお手本と同じになっていれば良いと思った(違った)。

誤答コード

public class BichromePainting {

	public String isThatPossible(String[] board, int k) {
		String YES = "Possible";
		String NO = "Impossible";
		int N = board.length;

		boolean[][] isBlack = new boolean[N][N];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				if (board[i].charAt(j) == 'B') {
					isBlack[i][j] = true;
				}
			}
		}

		boolean[][] isPainted = new boolean[N][N];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				if (isPainted[i][j] != isBlack[i][j]) {
					int r = Math.min(i, N - k);
					int c = Math.min(j, N - k);

					for (int l = r; l < r + k; l++) {
						for (int m = c; m < c + k; m++) {
							isPainted[l][m] = isBlack[i][j];
						}
					}
				}
			}
		}

		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				if (isPainted[i][j] != isBlack[i][j]) {
					return NO;
				}
			}
		}

		return YES;
	}
}

感想

本番でできなかったのつらすぎて震える。