백준 1018번
주어진 패턴에서 최소의 수정으로 8x8크기의 체스판을 만들기
isChess함수 : 이 함수는 체스판 시작점(x,y)를 넣어주면 체스판으로 만드는데 변경해야할 최소 블럭수를 반환해줍니다. change[0]은 흰검흰검...체스판을 만들기위해 change[1]은 검흰검흰..체스판을 만들기위한 변경개수를 세는 것이고 따라서 반환은 둘중에 작은 것으로 해줍니다.
바꿀지 말지 판단기준 : 판단기준은 체스판을 좌표로 생각해서 구해줬어요. std는 기준인데요 시작좌표의 색깔과 같아요. 시작좌표(0,0)와 변화량이 홀수(1,0)면 기준과 달라야하고 변화량이 짝수(1,1)에 있는 좌표의 색은 기준과 같아야해요.
import sys
first = input().split()
row = int(first[0])
col = int(first[1])
board = []
result = sys.maxsize
for _ in range(row):
board.append(list(input()))
def isChess(x,y):
std = ['W','B']
change = [0,0]
for i in range(8):
for j in range(8):
if (i+j) % 2 == 0: # 변화량이 짝수
if board[x+i][y+j] == std[0]:
change[1] += 1
else:
change[0] += 1
else: # 변화량이 홀수
if board[x+i][y+j] == std[0]:
change[0] += 1
else:
change[1] += 1
return min(change)
for i in range(row-7):
for j in range(col-7):
result = min(result,isChess(i,j))
print(result)