Algorithm/백준
C++ 알고리즘 - 백준 1018 체스판 다시 칠하기
마루설아
2024. 12. 29. 18:06
https://www.acmicpc.net/problem/1018
#include <iostream>
#define endl "\n"
using namespace std;
char chess1[8][8] = {
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'}
};
char chess2[8][8] = {
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W', 'B'},
{'B','W','B','W','B','W','B','W'}
};
char input[50][50] = { "" };
int main(void) {
// C++ Init
ios::sync_with_stdio(false);
cin.tie(NULL);
int input1, input2;
int min = 0, answer = -1;
char chk;
char ch;
cin >> input1 >> input2;
for (int i = 0; i < input1; i++) {
for (int j = 0; j < input2; j++) {
cin >> ch;
input[i][j] = ch;
}
}
for (int i = 0; i < input1 - 7; i++) {
for (int j = 0; j < input2 - 7; j++) {
min = 0;
for (int k = i; k < i + 8; k++) {
for (int l = j; l < j + 8; l++) {
if (chess1[k - i][l - j] == input[k][l]) continue;
else min++;
}
}
if (answer == -1) answer = min;
if (answer > min) answer = min;
}
}
for (int i = 0; i < input1 - 7; i++) {
for (int j = 0; j < input2 - 7; j++) {
min = 0;
for (int k = i; k < i + 8; k++) {
for (int l = j; l < j + 8; l++) {
if (chess2[k - i][l - j] == input[k][l]) continue;
else min++;
}
}
if (answer == -1) answer = min;
if (answer > min) answer = min;
}
}
if (answer == -1) answer = 0;
cout << answer;
}