문제는 이해했지만 놓친 포인트가 있어서 제대로 된 코드를 짜는 데 애먹었다..
N, M = map(int, input().split())
board = []
result = 64
for i in range(N):
board.append(list(input()))
for i in range(N-7):
for j in range(M-7):
countW = 0 # 좌상단이 W인 경우
countB = 0 # 좌상단이 B인 경우
for a in range(i, i+8):
for b in range(j, j+8):
if (a + b) % 2 == 0:
if board[a][b] != 'W':
countW += 1
if board[a][b] != 'B':
countB += 1
else:
if board[a][b] == 'W':
countW += 1
if board[a][b] == 'B':
countB += 1
result = min(result, countW, countB)
print(result)
if (i%2 == a%2 and j%2 == b%2) or (i%2 != a%2 and j%2 != b%2):
막 이런 식으로 했었다..
저렇게 간단한 방법이 있었다니..

이번 문제는 좀 많이 어려웠다. 브루트 포스 문제답게 경우의 수를 다 따져서 코드를 짜야 했다. 다음엔 꼭 내 힘으로 완벽히 해보자..