코드가 지나치게 길어진 것 같지만... 일단 이번엔 여기까지만 하고 넘어가도록 하자. 안 그래도 갈 길이 멀다
#백준 1018번
def min_paint_count(N:int, M:int, board:list, chess_table_1:list, chess_table_2:list) -> int:
min_count1 = 65; min_count2 = 65
for i in range(8, N+1):
for j in range(8, M+1):
count1 = 0; count2 = 0
p = 0
for a in range(i-8, i):
q = 0
for b in range(j-8, j):
if board[a][b] != chess_table_1[p][q]:
count1 += 1
if board[a][b] != chess_table_2[p][q]:
count2 += 1
q += 1
p += 1
min_count1 = min(count1, min_count1)
min_count2 = min(count2, min_count2)
return min(min_count1, min_count2)
N, M = map(int, input().split())
board = []
for _ in range(N):
board.append(list(map(str, input())))
chess_table_1 = []; chess_table_2 = []
for i in range(8):
row1 = []; row2 = []
for j in range(8):
if j % 2 == 1:
row1.append('W'); row2.append('B')
else:
row1.append('B'); row2.append('W')
if i % 2 == 0:
chess_table_1.append(row1)
chess_table_2.append(row2)
else:
chess_table_1.append(row2)
chess_table_2.append(row1)
print(min_paint_count(N, M, board, chess_table_1, chess_table_2))