주어진 입력 보드에서 크기를 분리하고, 분리한 보드의 수정 횟수를 구해가며 최소 수정 횟수를 출력한다. 주어진 보드에서 생성할 수 있는 프레임의 좌상단 꼭짓점 인덱스를 모두 순회하며 수정 횟수를 비교하며 최소 수정 횟수를 구하면 된다.
lines=['WBWBWBWB','BWBWBWBW']
chess_1 = lines * 4 # 원본 체스판1
chess_2 = chess_1[::-1] # 원본 체스판 2
n,m=map(int,input().split())
board=[]
for _ in range(n):
board.append(input())
# 원본 체스판과 전체 보드에서 프레임을 돌며 비교하는 함수
def checkboard(chess,board,n,m):
mincount = 64
for x in range(n-7):
for y in range(m-7):
count = 64
for i in range(8):
for j in range(8):
if chess[i][j] == board[x+i][y+j]:
count -= 1
mincount = min(mincount,count)
return mincount
# 체스판1과 체스판2 비교 횟수 중 작은 것을 출력
print(min(checkboard(chess_1,board,n,m),checkboard(chess_2,board,n,m)))