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):
idx1 = 0
idx2 = 0
for i in range(a, a+8):
for j in range(b, b+8):
if (i + j) % 2 == 0:
if board[i][j] != 'W':
idx1 += 1
if board[i][j] != 'B':
idx2 += 1
else:
if board[i][j] != 'B':
idx1 += 1
if board[i][j] != 'W':
idx2 += 1
cnt.append(min(idx1, idx2))
print(min(cnt))
체스판은 맨 첫 칸이 W 또는 B로 시작함
따라서 W로 시작하는 경우와 B로 시작하는 경우로 나눠서 각각 다시 칠해야 하는 개수를 구해 최소값을 출력한다
'알고리즘 > 백준' 카테고리의 다른 글
백준 2750: 수 정렬하기 1 (Python) (0) | 2021.09.10 |
---|---|
백준 1436: 영화감독 숌 (Python) (0) | 2021.09.09 |
백준 7568: 덩치 (Python) (0) | 2021.09.08 |
백준 2231: 분해합 (Python) (0) | 2021.09.08 |
백준 2798: 블랙잭 (Python) (0) | 2021.09.08 |