practivceAlgorithm/백준

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

findTheValue 2021. 7. 26. 15:48

다른 스터디원들 보면 뭔가 짧게 풀었던데 일단 나는 0,0기준 고쳐야하는것 체크하고 그 값 범위마다 따로sum구해서

비교했다.

import sys
input = sys.stdin.readline

N,M = map(int,input().split())
chess = [list(input().rstrip()) for _ in range(N)]

dp = [[0]*M for _ in range(N)]

for i in range(N):
    for j in range(M):
        if i%2 == j%2:
            if chess[0][0] != chess[i][j]:
                dp[i][j]=1
        else:
            if chess[0][0] == chess[i][j]:
                dp[i][j]=1

min_change = float('inf')
for i in range(N-7):
    for j in range(M-7):
        sum_count = 0
        for k in range(i,i+8):
            sum_count += sum(dp[k][j:j+8])
        if sum_count > 32:
            sum_count = 64 - sum_count
        if min_change > sum_count:
            min_change = sum_count

print(min_change)