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)
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1037번 약수(python) (0) | 2020.01.23 |
---|---|
백준 알고리즘 1032번 명령 프롬프트(python) (0) | 2020.01.23 |
백준 알고리즘 1015번 수열 정렬(python) (0) | 2020.01.23 |
백준 알고리즘 1010번 다리 놓기(python) (0) | 2020.01.23 |
백준 알고리즘 1009번 분산처리(python) (0) | 2020.01.23 |