티스토리 뷰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
M, N = list(map(int, input().split()))
board = []
for i in range(M):
    board.append(input())
 
count = 1000
for i in range(0, M-7): 
    for j in range(0, N-7): # 8X8을 찾을 수 있는 행렬
        now = 0
        color = "W" # 첫 시작이 White
        for x in range(i, i+8):
            for y in range(j, j+8):
                if color != board[x][y]:
                    now += 1
                if color == "B" and y != j+7# 다음 행으로 넘어갈 시 색깔 변경 안함
                    color = "W"
                elif color == "W" and y != j+7# 다음 행으로 넘어갈 시 색깔 변경 안함
                    color = "B"
        count = min(count, now)
 
for i in range(0, M-7):
    for j in range(0, N-7):
        now = 0
        color = "B" # 첫 시작이 Black
        for x in range(i, i+8):
            for y in range(j, j+8):
                if color != board[x][y]:
                    now += 1
                if color == "B" and y != j+7:
                    color = "W"
                elif color == "W" and y != j+7:
                    color = "B"
        count = min(count, now)
 
print(count)
cs

 

# 체스판의 시작 색깔을 흰색과 검은색으로 하는 두 가지의 경우를 구현하였다.  한 칸씩 이동할 때마다 칸의 색깔을 변경해주었다. 이 때 다음 행으로 넘어가는 경우는 색깔 변경을 하지 않아야 한다. 처음 행을 흰색으로 시작하였고 마지막 열이 검은색으로 끝나도 두번째 행의 시작은 검은색이 돼야하기 때문이다.