[백준] 1018번 체스판 다시 칠하기

1132 단어 CodingTestCodingTest

문제 출처 : https://www.acmicpc.net/problem/1018

정답 코드 💻

n,m= map(int,input().split())
board = []
cnt = []

for i in range(n) :
    board.append(input())

for a in range(n-7) :
    for b in range(m-7) :
        idw = 0
        idb = 0
        for c in range(a,a+8) :
            for d in range(b,b+8) :
                if (c+d) % 2 == 0 :
                    if board[c][d] != 'W' :
                        idw += 1
                    if board[c][d] != 'B' :
                        idb += 1
                else :
                    if board[c][d] != 'B':
                        idw += 1
                    if board[c][d] != 'W':
                        idb += 1
        cnt.append(min(idw,idb))
print(min(cnt))

설명

👉🏻 8X8로 잘라야 해서 행을 i-7만큼, 열을 j-7만큼 고정시킨다.
그 후 i,j에서 i+8까지, j+8까지 전부 반복하면서 확인한다.
흰색이 먼저인 경우와 검은색이 먼저인 경우를 나누어 min()을 사용하여 최소값을 알아낸다.

느낀 점 ✏️

이 문제는 감도 안왔다. 브루트 포스 너무어려워😥

좋은 웹페이지 즐겨찾기