본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]1018번 체스판 다시 칠하기

by 현장 2021. 4. 22.

-코드

n, m = map(int, input().split())
arr = [input() for _ in range(n)]
r = []
for a in range(n - 7):
    for b in range(m - 7):
        r1 = 0
        r2 = 0
        for i in range(a, a + 8):
            for j in range(b, b + 8):
                if (j + i) % 2 == 0:
                    if arr[i][j] == 'W':
                        r1 += 1
                    if arr[i][j] == 'B':
                        r2 += 1
                else:
                    if arr[i][j] == 'B':
                        r1 += 1
                    if arr[i][j] == 'W':
                        r2 += 1
        r.append(min(r1, r2))
print(min(r))

처음에 문제를 잘못 읽어서 그냥 n * m의 보드의 다시 색칠해야 하는 부분의 개수로 만들다가 출력이 이상하게 나와서 다시 읽어보니 8 * 8로 잘라서 그 안에서 색칠할 개수가 가장 적은 보드의 색칠할 개수를 구하는 것이었습니다. 그래서 처음에는 count를 가지고 해결을 하려다가 결국 해결을 하지 못해서 질문 게시판을 찾아보니 for문을 이용하는 것이 쉽게 해결할 것 같아서 제가 혼자서 해결하지 못해서 아쉽지만 해결을 하였습니다.