STUDY/Algorithm

[백준] 1018 체스판 다시칠하기

sinawi95 2021. 2. 20. 21:40
728x90

https://www.acmicpc.net/problem/1018

 

1018번: 체스판 다시 칠하기

첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.

www.acmicpc.net

def change_color(matrix, index_row, index_col):
    board1 = ['BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB',]
    board2 = ['WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW',]
    result1 = 0
    result2 = 0
    for r in range(8):
        for c in range(8):
            if not board1[r][c] == matrix[index_row + r][index_col + c]:
                result1 += 1
            if not board2[r][c] == matrix[index_row + r][index_col + c]:
                result2 += 1
    return min(result1, result2)

n, m = map(int, input().split())
board = [input() for _ in range(n)]
result = 64
for i in range(n+1-8):
    for j in range(m+1-8):
        tmp = change_color(board, i, j)
        if result > tmp:
            result = tmp
print(result)

두가지 경우의 수(왼쪽위가 B로 시작하는 판, W로 시작하는 판)을 미리 적어두고,

모든 인덱스에 해당하는 8*8판들을 비교해가면서 가장 적게 변화하는 값을 찾았다.

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 10163 색종이  (0) 2021.02.22
[백준] 2851 슈퍼마리오  (0) 2021.02.22
[백준] 7568 덩치  (0) 2021.02.20
[백준] 2231 분해합  (0) 2021.02.20
[백준] 1436 영화감독 숌  (0) 2021.02.20