Leta Learns

[Python] 백준 1018번 - 체스판 다시 칠하기 본문

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))

Comments