BAEKJOON-1018 : 체스판 다시 칠하기
BEAKJOON-1018 : 체스판 다시 칠하기

브루트포스 알고리즘을 이용하여 푸는 대표적인 문제인 것 같다.
체스판의 칸마다 검정색과 흰색 중 임의의 색으로 칠해져 있는 체스판arr을 첫번째 칸부터 순서대로 8*8 배열로 잘라 원래의 체스판과 비교해보면 되는 문제이다.
다만 원래의 체스판이 칠해지는 경우의 수가 2가지이므로 두 경우를 8*8로 자른 체스판과 비교하여 다시 칠해야 하는 칸의 수cnt가 더 적은 수를 고르면 된다.
코드
chess1 = ['WBWBWBWB', 'BWBWBWBW'] * 4
chess2 = ['BWBWBWBW', 'WBWBWBWB'] * 4
arr = []
n, m = map(int, input().split())
for i in range(n):
arr.append(input()[:m])
minCnt = 64
for row in range(n-8+1):
for col in range(m-8+1):
cnt1, cnt2 = 0, 0
for i in range(8):
for j in range(8):
if arr[row+i][col+j] != chess1[i][j]:
cnt1 += 1
if arr[row+i][col+j] != chess2[i][j]:
cnt2 += 1
cnt = min(cnt1, cnt2)
minCnt = min(minCnt, cnt)
print(minCnt)
댓글남기기