반응형
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void) {
int Col; int Row;
cin >> Col >> Row;
vector<char> chess(51,0);
vector<vector<char>> chessSpace(51,vector<char>(51,0));
vector<char> chess1(51, 0);
vector<vector<char>> chessSpace1(51, vector<char>(51, 0));
vector<char> compare(51, 0);
vector<vector<char>> chessCompare(51, vector<char>(51, 0));
int i, j;
for (i = 0;i < 8;i++) {
for (j = 0;j < 8;j++) {
if (i + j == 0 || (i + j) % 2 == 0) {// 0 이거나 2의 배수
chessSpace[i][j] = 'W';
chessSpace1[i][j] = 'B';
}
else {
chessSpace[i][j] = 'B';
chessSpace1[i][j] = 'W';
}
}
}
for (i = 0;i < Col;i++) {
for (j = 0;j < Row;j++) {
char A;
cin >> A;
chessCompare[i][j] = A;
}
}
int count = 0;
int count1 = 0;
int ai, aj;
vector<int> counter;
for (ai = 0;ai <= Col - 8;ai++) {
for (aj = 0;aj <= Row - 8;aj++) {
int bi = 0; int bj = 0;
for (i = ai;i < ai + 8;i++) {
for (j = aj;j < aj + 8;j++) {
if (chessSpace[bi][bj] != chessCompare[i][j]) {
count++;
}
if (chessSpace1[bi][bj] != chessCompare[i][j]) count1++;
if (bj <= 8)bj++;
}if(bi<=8)bi++;
bj = 0;
}counter.push_back(count);
counter.push_back(count1);
count = 0;
count1 = 0;
bi = 0;
}
}
int min = *min_element(counter.begin(), counter.end());
cout << min;
return 0;
}
너무 코드가 더럽다
이게 최선인가 싶다.
1. 비교할 체스판 2개 생성
2. 기준점을 바꿔가면서 목표 체스판과 비교 후 count push
3. 최솟값 출력
반응형
'BOJ' 카테고리의 다른 글
[BOJ 2531] 회전 초밥 (0) | 2024.03.08 |
---|---|
[BOJ 2146] 다리 만들기 (0) | 2024.01.26 |
[백준 11758번] CCW (0) | 2021.04.30 |
[백준] 순열 & 조합 (Permutation & Combination) (0) | 2021.04.27 |
[백준 9012번] 괄호 (0) | 2021.04.25 |