(브루트 포스) 체스판 다시 칠하기
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에서는 돌아가는데 제출하면 런타임 에러가 뜨네요..