https://www.acmicpc.net/problem/1018
N, M = map(int, input().split())
org_board = []
for i in range(N):
X = tuple(input())
org_board.append(X)
answer_list = []
for i_row in range(len(org_board)-7):
board = org_board[i_row:i_row+8]
for i_col in range(len(board[0])-7):
answer = 0
if board[0][i_col] == 'W': # 왼쪽 상단이 'W'
for j in range(0, 8, 2): # 짝수행
for k in range(i_col,i_col+8): # 지금 행의 열 하나하나 탐색
if (k-i_col) % 2 == 0 and board[j][k] == 'B': # 짝수열이면서 'B'
answer += 1
if (k-i_col) % 2 == 1 and board[j][k] == 'W': # 홀수열이면서 'W'
answer += 1
for j in range(1, 8, 2): # 홀수행
for k in range(i_col,i_col+8): # 지금 행의 열 하나하나 탐색
if (k-i_col) % 2 == 0 and board[j][k] == 'W': # 짝수열이면서 'W'
answer += 1
if (k-i_col) % 2 == 1 and board[j][k] == 'B': # 홀수열이면서 'B'
answer += 1
elif board[0][i_col] == 'B': # 왼쪽 상단이 'B'
for j in range(0, 8, 2): # 짝수행
for k in range(i_col,i_col+8): # 지금 행의 열 하나하나 탐색
if (k-i_col) % 2 == 0 and board[j][k] == 'W': # 짝수열이면서 'W'
answer += 1
if (k-i_col) % 2 == 1 and board[j][k] == 'B': # 홀수열이면서 'B'
answer += 1
for j in range(1, 8, 2): # 홀수행
for k in range(i_col,i_col+8): # 지금 행의 열 하나하나 탐색
if (k-i_col) % 2 == 0 and board[j][k] == 'B': # 짝수열이면서 'B'
answer += 1
if (k-i_col) % 2 == 1 and board[j][k] == 'W': # 홀수열이면서 'W'
answer += 1
answer_list.append(answer)
print(min(answer_list))
5시간 넘게 걸렸는데 계속 실패..
확인해보니
9 23
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBW
이런 예시에서
왼쪽 상단이 아니라 오른쪽 하단에서부터 탐색을 시작하면 더 최소화할 수 있는 값이 있는데 이걸 못 찾는 듯
다음에 다시 해보기
n, m = map(int, input().split())
board = []
for i in range(n):
board.append(input())
answer = []
for a in range(n-7):
for b in range(m-7):
count1 = 0
count2 = 0
for i, brd in enumerate(board[a:a+8]):
for j, br in enumerate(brd[b:b+8]):
if (i + j) % 2 == 0 and br == 'W':
count1 += 1
elif (i + j) % 2 == 1 and br == 'B':
count1 += 1
elif (i + j) % 2 == 0 and br == 'B':
count2 += 1
elif (i + j) % 2 == 1 and br == 'W':
count2 += 1
answer.append(count1)
answer.append(count2)
print(min(answer))
9 23
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBW
31
해결 완료
두 경우의 count 변수를 개별로 해서 최솟값을 도출함