.
1. n, m 값 입력받기
2. 길이 m으로 이루어져있는 문자열 B
, W
을 n개 입력받기
3. 각 입력받은 문자열 한 줄씩 검사
3-1. 만약 문자열이 'BBBBBBBBBWBW'로 이루어질 때, (1)보다 (2)가 더 문자열 바꿀 경우가 적기 때문에 (2)가 더 효율적이며 최솟값을 출력함
3-2. **체스판이 8X8이므로, 주어진 문자열 길이에 따라 검사 횟수가 달라짐**
ex) 문자열이 12일 경우, 총 검사하게 될 횟수는 5개
(BBBBBBBB, BBBBBBBB,BBBBBBBW, BBBBBBWB, BBBBBWBW)
i,j
를 기준으로 (a,b)에서 a+b값이 짝수인 경우 같은 문자이고, 홀수인 경우 다른 문자이다.n, m = map(int, input().split())
board = []
result = []
for _ in range(n):
board.append(input())
for i in range(n - 7):
for j in range(m - 7):
# 첫번째 문자열이 B인 경우와 W인 경우를 나눠서 검사
first_B = 0
first_W = 0
for a in range(i, i + 8):
for b in range(j, j + 8):
if (a + b) % 2 == 0:
# i+j과 a+b의 값 차이가 짝수일 경우 같은 값을 가짐
if board[a][b] != 'B':
first_B += 1
if board[a][b] != 'W':
first_W += 1
else:
if board[a][b] != 'W':
fi rst_B += 1
if board[a][b] != 'B':
first_W += 1
result.append(first_B)
result.append(first_W)
print(min(result))