문제
해결과정
- 가능한 모든 경우의 수를 확인하는 문제
- 우선 체스 판을 8*8로 잘라서 확인해야한다.
- 시작점에서 +8칸을 확인하는데
현재의 행과 열의 합이 짝수이면 시작점의 색깔과 같고
홀수이면 시작점의 색깔과 다르다
- 짝수일 때 W가 아니라면 cnt_w에 1을 더하고, B가 아니라면 cnt_b에 1을 더한다.
홀수일 때 B가 아니라면 cnt_w에 1을 더하고, W가 아니라면 cnt_b에 1을 더한다.
- w로 시작할 경우와 b로 시작할 경우 바뀐 정사각형의 수 중 작은 수를 count리스트에 더해준다.
- 모든 경우의 수를 다 체크한 후, count 중 제일 작은 수를 출력
풀이
import sys
n, m = map(int, sys.stdin.readline().split())
board = []
count =[]
for _ in range(n):
board.append(sys.stdin.readline().strip())
for x in range(n-7):
for y in range(m-7):
cnt_w = 0
cnt_b = 0
for i in range(x,x+8):
for j in range(y,y+8):
if (i+j) % 2 == 0:
if board[i][j] != "W":
cnt_w += 1
if board[i][j] != "B":
cnt_b += 1
else:
if board[i][j] != "B":
cnt_w += 1
if board[i][j] != "W":
cnt_b += 1
count.append(min(cnt_w, cnt_b))
print(min(count))