체스판 다시 칠하기
Python Code
import sys
def checkCorrect(lst): #8*8 체스판이 제대로 칠해져 있는지 확인하는 함수
change1 = 0
change2 = 0
temp = 'W' #맨 왼쪽 위 칸이 흰색인 경우
for i in range(8):
for j in range(8):
if lst[i][j] != temp:
change1 += 1
temp = ("B" if temp == 'W' else 'W') #W->B, B->W로 번갈아가며 비교
temp = ("B" if temp == 'W' else 'W') #줄이 바뀔 때는 W->W, B->B로 가므로 한 번 더 바꿈
temp = 'B' #맨 왼쪽 위 칸이 검은색인 경우
for i in range(8):
for j in range(8):
if lst[i][j] != temp:
change2 += 1
temp = ("B" if temp == 'W' else 'W')
temp = ("B" if temp == 'W' else 'W')
return min(change1, change2) #맨 왼쪽 위 칸이 흰색인 경우와 검은색인 경우 둘 중에 다시 칠해야 하는 개수가 적은 경우를 리턴
a = sys.stdin.readline().rstrip()
a = list(map(int, a.split()))
chess = []
for i in range(a[0]):
chess.append(sys.stdin.readline().rstrip())
changes = [] #전체 체스판을 8*8로 잘라 각각의 경우 몇 개를 다시 칠해야 하는지 저장하는 리스트
for i in range(a[0]-7):
for j in range(a[1]-7):
#전체 체스판을 8*8로 잘라 모든 경우를 확인함
temp = [k[j:j+8] for k in chess[i:i+8]]
changes.append(checkCorrect(temp))
print(min(changes)) #다시 칠해야 하는 개수가 가장 적은 경우를 리턴