본문 바로가기
프로그래밍/알고리즘 문제풀이

[백준] [c++] 1018 번 체스판다시칠하기

by 엽기토기 2020. 8. 6.
반응형

반례를 못찾아서 오래걸렸음

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
char arr[50][50];
int main() {
	int n, m,i,j,k,l;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> arr[i][j];
		}
	}
	int cnt;
	vector<int> vec;
	for (i = 0; i <= n-8; i++) {
		for (j = 0; j <= m-8; j++) {
			cnt = 0;
			for (k = i; k < i + 8; k++) {
				for (l = j; l < j + 8; l++) {
					if ((k - i + l - j) % 2 == 1 && arr[k][l] == arr[i][j]) {
						cnt++;
					}
					if ((k - i + l - j) % 2 == 0 && arr[k][l] != arr[i][j]) {
						cnt++;
					}
				}
			}
			vec.push_back(min(cnt,64-cnt));
		}
	}
	sort(vec.begin(), vec.end());
	cout << vec[0];

}
반응형