1018 실버5
me
import sys
input = sys.stdin.readline
n,m=map(int,input().split())
boards=[]
for _ in range(n):
temp = list(input())
tempBoard=[]
for i in range(m):
if temp[i]=="W":
tempBoard.append(0)
else:
tempBoard.append(1)
boards.append(tempBoard)
reals=[
[
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0]
],
[
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1]
]
]
res=[]
for i in range(n+1-8):
for j in range(m+1-8):
tempW,tempB=0,0
for const_i in range(8):
for const_j in range(8):
if boards[i+const_i][j+const_j] ^ reals[0][const_i][const_j] == 1:
tempW += 1
if boards[i+const_i][j+const_j] ^ reals[1][const_i][const_j] == 1:
tempB += 1
res.append(min(tempW,tempB))
print(min(res))
- min을 굳이 두 단계에 걸쳐서 했어야 하는가?
- 비트마스크
solution
n, m = map(int, input().split())
l = []
mini = []
for _ in range(n):
l.append(input())
for a in range(n - 7):
for i in range(m - 7):
idx1 = 0
idx2 = 0
for b in range(a, a + 8):
for j in range(i, i + 8):
if (j + b)%2 == 0:
if l[b][j] != 'W': idx1 += 1
if l[b][j] != 'B': idx2 += 1
else :
if l[b][j] != 'B': idx1 += 1
if l[b][j] != 'W': idx2 += 1
mini.append(idx1)
mini.append(idx2)
print(min(mini))