N, M = map(int, input().split())
original = [] # 자르기 전
count = [] # 자른 후
for _ in range(N):
original.append(input())
for a in range(N-7): # a는 행
for b in range(M-7): b는 열
index1 = 0 # w로 시작할 경우
index2 = 0 # b로 시작할 경우
for i in range(a, a+8):
for j in range(b, b+8):
if (i+j) % 2 == 0:
if original[i][j] != 'W':
index1 += 1 # w로 칠하는 갯수
if original[i][j] != 'B':
index2 += 1 # b로 칠하는 갯수
else:
if original[i][j] != 'B':
index1 += 1 # b로 칠하는 갯수
if original[i][j] != 'W':
index2 += 1 # w로 칠하는 갯수
count.append(min(index1, index2))
print(min(count))
조건 1 : 8 × 8으로 잘라내야 한다.
조건 2 : W, B가 번갈아서 나와야 한다.
조건 3 : 최소로 바꿔야 한다.
4중 for문을 사용해서 모든 경우의 수를 따져봐야 한다.
N × M 보드에서 자를 수 있는 경우의 수는 (N-i) × (M-j) 가지가 된다.
행과 열의 인덱스의 합이 짝수인경우, 일정한 한 색을 가지게 되고, 홀수인 경우에도, 다른 일정한 한 색을 가지게 된다.