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

danbibibi·2021년 9월 19일
0

문제

문제 바로가기> 백준 1018번: 체스판 다시 칠하기

풀이

브루트포스 알고리즘을 이용하여 풀었다. (8*8 사이의 격자가 움직이며 최소값을 업데이트하는 방식으로!)
이 때 주의해야할 점은 두가지 경우가 있다는 것이다. 첫번째 경우는 첫 문자를 고치지 않는다고 가정하는 경우이고, 두번째 경우(64-첫번째 경우)는 첫번째 문자를 고친다고 가정하는 경우이다.

import sys
N, M = map(int, input().split())
chess = list()
for i in range(N):
    chess.append(sys.stdin.readline().rstrip())
ans = 32
for i in range(N-7):
    for j in range(M-7):
        repaint = 0
        begin_chr=chess[i][j] 
        if begin_chr == 'B':
            scnd_chr = 'W'
        else:
            scnd_chr = 'B'
        begin_mod2=(i+j)%2
        for k in range(i, i+8):
            for l in range(j, j+8):
                if (k+l)%2==begin_mod2:
                    if chess[k][l]!=begin_chr:
                        repaint+=1
                else:
                    if chess[k][l]!=scnd_chr:
                        repaint+=1
        ans = min(ans, repaint, 64-repaint)
print(ans)
profile
블로그 이전) https://danbibibi.tistory.com

0개의 댓글

관련 채용 정보