Coding/백준
[Python] 백준 1018번 - 체스판 다시 칠하기
leta
2022. 7. 19. 20:02
문제 https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
인덱스 에러 안 나도록 지정해주는 거랑 (for i in range(n-7))
짝홀수 구분해서 잘못 칠한 색 찾아내는 방식을 떠올리는데 오래 걸렸다.
아무리 봐도 모르겠어서 다른 사람이 쓴 문제 해석 보면서 풀었다.
... 어렵다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
chess = [input().strip() for _ in range(n)]
ans = []
for i in range(n-7):
for j in range(m-7):
sww = 0 #start with white
swb = 0 #start with black
for k in range(i, i+8):
for l in range(j, j+8):
if (k + l) % 2 == 0:
if chess[k][l] != 'W':
sww += 1
if chess[k][l] != 'B':
swb += 1
else:
if chess[k][l] != 'B':
sww += 1
if chess[k][l] != 'W':
swb += 1
ans.append(min(sww, swb))
print(min(ans))