(브루트 포스) 체스판 다시 칠하기

2020. 2. 28. 00:04개발노트

이 문제의 저작권은 BAEKJOON에 있습니다.

 

https://www.acmicpc.net/problem/1018

문제는 위 링크에서 확인할 수 있습니다.

 

def change(color):
    if color == 'W':
        color = 'B'
    else:
        color = 'W'
    return color
N, M = map(int, input().split())
bd = [input() for _ in range(N)]
#N은 Y 축 M은 X축이다.
#체스판은 8 * 8 크기만 지정가능
X_size = M - 8
Y_size = N - 8
temp = [] #총 바뀐 값을 담는 리스트
for y in range(0, Y_size + 1):
    for x in range(0, X_size + 1):
        #첫 칸의 색을 알아야한다.
        color = bd[x][y]
        count = 0
        for j in range(y, y+8):
            for k in range(x, x+8):
                if j == 0 and k == 0:
                    continue           
                if k !=x:
                    color = change(color)
                if bd[j][k] != color:
                    count += 1         
        temp.append(count)
print(min(temp))

8 * 8 크기의 체스판이기 때문에 모든 체스 칸을 돌아다니며 체스 칸 색이 올바른지 체크합니다.

체크하고 있는 줄의 마지막 칸과 그 다음줄의 첫 번째 칸이 같은 색인 것에 주의해야 합니다.

 

 

VScode에서는 돌아가는데 제출하면 런타임 에러가 뜨네요..