#include <iostream>
#include <string>
using namespace std;
int count(int n, int m, char* board[]) {
int num = 2500;
int num1 = 0;
int num2 = 0;
int result=2500;
for (int a = 0; a < n - 7; a++) {
for (int b = 0; b < m - 7; b++) {
num1 = 0;
num2 = 0;
for (int i = a; i < 8 + a; i++) {
for (int j = b; j < 8 + b; j++) {
if ((i + j - a - b) % 2 == 0) {
if (board[i][j] == 'B') {
num1++;
}
else
num2++;
}
else {
if (board[i][j] == 'W')
num1++;
else
num2++;
}
}
}
num = num1 > num2 ? num2 : num1;
if (result > num)
result = num;
//cout << num1 << " " << num2 << " " << result << endl;
}
}
return result;
}
int main() {
int n, m, result;
cin >> n >> m;
char** board = new char * [n];
for (int i = 0; i < n; i++) {
board[i] = new char[m];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> board[i][j];
}
}
result = count(n, m, board);
cout << result;
for (int i = 0; i < n; i++)
delete[] board[i];
delete[] board;
}
체스판을 무조건 8x8로 잘라낸다는 조건과 W으로 시작할 지, B으로 시작할 지에 집중했다.
문제: https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
'Baekjoon > C++' 카테고리의 다른 글
[백준 1094번] 막대기 (0) | 2023.10.08 |
---|---|
[백준 28278번] 스택 2 (0) | 2023.10.06 |
[백준 1009번] 분산처리 (0) | 2023.07.25 |
[백준 1012번] 유기농 배추 (0) | 2023.07.25 |
[백준 1010번] 다리 놓기 (0) | 2023.07.24 |