알고리즘
[백준 1080] 체스판 다시 칠하기 - 브루트포스
kyeongjun-dev
2022. 1. 18. 11:17
코드
def solution(arr):
answer = 2e9
# black 시작하는 체스판
b_arr = [
list('BWBWBWBW'),
list('WBWBWBWB'),
list('BWBWBWBW'),
list('WBWBWBWB'),
list('BWBWBWBW'),
list('WBWBWBWB'),
list('BWBWBWBW'),
list('WBWBWBWB')
]
# white 시작하는 체스판
w_arr = [
list('WBWBWBWB'),
list('BWBWBWBW'),
list('WBWBWBWB'),
list('BWBWBWBW'),
list('WBWBWBWB'),
list('BWBWBWBW'),
list('WBWBWBWB'),
list('BWBWBWBW'),
]
# height, width를 -7 까지만 탐색
for h in range(len(arr)-7):
for w in range(len(arr[0])-7):
b_cnt = 0
w_cnt = 0
# height+7, width+7 까지 탐색하며 b_arr, w_arr과 다르면 각자 카운트
for j in range(8):
for i in range(8):
if arr[h+j][w+i] != b_arr[j][i]:
b_cnt += 1
if arr[h+j][w+i] != w_arr[j][i]:
w_cnt += 1
# 최소값으로 업데이트
answer= min(answer, min(b_cnt, w_cnt))
print(answer)
h, w = map(int, input().split())
arr = []
for _ in range(h):
arr.append(list(input()))
solution(arr)
(i+j)%2 를 사용하면, b_arr w_arr 없이 풀 수 있다...