728x90
반응형

N*M 범위에서 제일 바꿀게 적은 8*8 영역을 찾아야 돼서 그런지 상당히 반복문을 많이 사용했다.

사실 영역을 찾는다기 보다는 전 영역에 8*8 크기의 필터를 돌려서 나오는 결과들 중 제일 작은 값이 답이다.

def jinho(li):
    c1 = ['WBWBWBWB', 'BWBWBWBW'] * 4    
    c2 = ['BWBWBWBW', 'WBWBWBWB'] * 4
    n1, n2 = 0, 0
    for i in range(8):
        for j in range(8):
            if c1[i][j] != li[i][j]:
                n1 += 1
            if c2[i][j] != li[i][j]:
                n2 += 1
    return min(n1, n2)

N, M = map(int, input().split())
li = []
for i in range(N):
    li.append(input())

ans = N*M
for n in range(N-7):
    for m in range(M-7):
        t_li = []
        for i in range(8):
            t = []
            for j in range(8):
                t.append(li[i+n][j+m])
            t_li.append(t)
        ans = min(ans, jinho(t_li))
print(ans)

728x90
반응형

+ Recent posts