반응형
문제링크 : https://www.acmicpc.net/problem/1018
풀이
n, m = map(int, input().split())
cnt = []
board = [list(input()) for _ in range(n)]
for a in range(n - 7):
for b in range(m - 7): # 8*8로 자르기 위해, -7해준다
w_index = 0 # 흰색으로 시작
b_index = 0 # 검은색으로 시작
for i in range(a, a + 8): # 시작지점
for j in range(b, b + 8): # 시작지점
if (i + j) % 2 == 0: # 짝수인 경우
if board [i][j] != 'W': # W가 아니면, 즉 B이면
w_index += 1 # W로 칠하는 갯수
else: # W일 때
b_index += 1 # B로 칠하는 갯수
else: # 홀수인 경우
if board [i][j] != 'W': # W가 아니면, 즉 B이면
b_index += 1 # B로 칠하는 갯수
else:
w_index += 1 # W로 칠하는 갯수
cnt.append(w_index) # W로 시작할 때 경우의 수
cnt.append(b_index) # B로 시작할 때 경우의 수
print(min(cnt))
- 체스판이 돌아갈때 짝수의 위치는 첫번째값과 모두 같아야 한다.
- 반면, 홀수일 경우는 달라야한다. 즉, 첫번째 값이 W라면 모든 짝수의 위치는 W이어야하고 홀수의 위치는 B이어야 한다.
- 첫번째 값이 흰색으로 시작하는 경우와 검은색으로 시작하는 경우 둘다 구해서 최소값을 산출한다.
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/백트래킹] N과 M (3) (0) | 2023.05.23 |
---|---|
[BOJ/백트래킹] N과 M (2) (0) | 2023.05.23 |
[BOJ/그리디] 1931 회의실배정 (0) | 2023.05.15 |
[BOJ/그리디] 13305 주유소 (0) | 2023.05.15 |
[BOJ/그리디] 1541 잃어버린 괄호 (0) | 2023.05.15 |