문제 출처 : https://www.acmicpc.net/problem/1018
n,m= map(int,input().split())
board = []
cnt = []
for i in range(n) :
board.append(input())
for a in range(n-7) :
for b in range(m-7) :
idw = 0
idb = 0
for c in range(a,a+8) :
for d in range(b,b+8) :
if (c+d) % 2 == 0 :
if board[c][d] != 'W' :
idw += 1
if board[c][d] != 'B' :
idb += 1
else :
if board[c][d] != 'B':
idw += 1
if board[c][d] != 'W':
idb += 1
cnt.append(min(idw,idb))
print(min(cnt))
👉🏻 8X8로 잘라야 해서 행을 i-7만큼, 열을 j-7만큼 고정시킨다.
그 후 i,j에서 i+8까지, j+8까지 전부 반복하면서 확인한다.
흰색이 먼저인 경우와 검은색이 먼저인 경우를 나누어 min()을 사용하여 최소값을 알아낸다.
이 문제는 감도 안왔다. 브루트 포스 너무어려워😥