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 |