백준(1018) - 체스판 다시 칠하기 Python

최대 1 분 소요

백준(1018) - 체스판 다시 칠하기

문제풀이: 구현, 파이썬

해결방법
  • 입력받은 행렬의 크기에서 8 * 8행렬이 가능한 부분을 확인하고

  • 8 * 8 의 완성된 체스판이랑 비교해서 작은 값을 출력하면된다.

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
board = []
for i in range(n):
    board.append(input().rstrip())

temp_W = ['WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW']
temp_B = ['BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB']


def check(board, y, x):
    cntW = 0
    cntB = 0
    for i in range(8):
        for j in range(8):
            if board[y + i][x + j] != temp_W[i][j]:
                cntW += 1
        
            if board[y + i][x + j] != temp_B[i][j]:
                cntB += 1

    return min(cntW, cntB)


answer = int(1e9)
for i in range(n - 8 + 1):
    for j in range(m - 8 + 1):
        answer = min(answer, check(board, i, j))

print(answer)

댓글남기기