Baekjoon/C++
[백준 1018번] 체스판 다시 칠하기
Yo-mi
2023. 9. 24. 16:51
#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으로 시작할 지에 집중했다.