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

최대 1 분 소요

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)

카테고리:

업데이트:

댓글남기기