import sys
n, m = map(int, sys.stdin.readline().split())
board = []
result = []
for _ in range(n):
board.append(sys.stdin.readline().strip())
for i in range(n-7):
for j in range(m-7):
is_black = 0
is_white = 0
for k in range(i,i+8):
for l in range(j, j+8):
if (k+l) % 2 == 0:
if board[k][l] != 'B':
is_black +=1
if board[k][l] != 'W':
is_white +=1
else:
if board[k][l] != 'W':
is_black +=1
if board[k][l] != 'B':
is_white +=1
result.append(is_black)
result.append(is_white)
print(result)
print(min(result))
위 문제에 접근하는 방법
8x8 로 자르기
이 문제는 입력받은 n,m 을 이용해 8칸이므로 -7 한 값까지 반복하여 모든 경우의 수를 확인하면 된다.
is_black, is_white 변수 이용
위 변수는 체스판이 검정으로 시작했을 때, 하얀색으로 시작했을 때 얼마나 칠해야하는 지 저장하는 변수이다
체스판을 자르고 0,0 으로 하는 값이 i,j 일 때 8칸 확인하는 반복문을 만든다
(k + l) % 2 를 이용
체스판 좌표를 더한 값을 이용하는 방법인데
0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3
라고 하면
짝 홀 짝 홀
홀 짝 홀 짝
짝 홀 짝 홀
홀 짝 홀 짝
으로 체스 판 모양과 동일하다 이를 이용하는 것이다.