코테준비
[백준 / 파이썬] 1018번 체스판 다시 칠하기
지숭숭숭
2024. 1. 12. 13:17
n, m = map(int, input().split())
a = []
for i in range(n):
a.append(input())
s=[]
for i in range(n-7):
for j in range(m-7):
fw = 0
fb = 0
for k in range(i, i+8):
for l in range(j, j+8):
if (k+l) % 2 == 0:
if a[k][l] != 'W':
fw += 1
if a[k][l] != 'B':
fb += 1
else:
if a[k][l] != 'B':
fw += 1
if a[k][l] != 'W':
fb += 1
s.append(fw)
s.append(fb)
print(min(s))
8*8로 잘라야 되기 때문에 행을 i-7, 열을 j-7로 고정시켜줘야 한다
중첩 for문으로 i와 j의 최대 크기 조절
(k + l ) % 2 == 0는 행과 열의 인덱스의 합이 짝수일 때 일정한 색, 홀수일 때 일정한 한 색을 가지기 때문이다
0,0(짝) | 0,1(홀) | 0,2(짝) | 0,3(홀) |
1,0(홀) | 1,1(짝) | 1,2(홀) | 1,3(짝) |
2,0(짝) | 2,1(홀) | 2,2(짝) | 2,3(홀) |
3,0(홀) | 3,1(짝) | 3,2(홀) | 3,3(짝) |
이런 식으로 인덱스의 합이 짝수인지 홀수인지로 체크무늬 판단 가능
728x90