가능한 체스판의 경우는 BW
가 반복되는 경우와 WB
가 반복되는 경우가 있다.
주어진 보드를 로 쭉 잘라보면서, 위의 두 가지 경우와 얼마나 차이가 나는지 확인해 보면 된다.
N, M = map(int,input().split())
candidate1 = [["W","B"]*4,["B","W"]*4]*4
candidate2 = [["B","W"]*4,["W","B"]*4]*4
origin = [input() for _ in range(N)]
result = 8*8
for i in range(N-7):
for j in range(M-7):
diff_1=0
diff_2=0
for k in range(8):
for l in range(8):
if origin[i+k][j+l] != candidate1[k][l]:
diff_1+=1
if origin[i+k][j+l] != candidate2[k][l]:
diff_2+=1
if result > diff_1:
result = diff_1
if result > diff_2:
result = diff_2
print(result)
이번 문제는 단순하지만, 보드의 크기가 커질 경우 다른 알고리즘으로 접근해야 한다.
다음 단계의 문제들에서 해당 방법들도 정리해 보고자 한다.