알고리즘 공부
백준 1018번 체스판 다시 칠하기
빵어
2023. 8. 21. 18:24
#include <iostream>
using namespace std;
int main()
{
char board[51][51] = {};
int n, m;
cin >> n >> m;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
cin >> board[i][j];
int minCount = 100000;
for (int i = 0; i < n - 7; ++i)
{
for (int j = 0; j < m - 7; ++j)
{
int count = 0, count2 = 0;
char firstColor = board[i][j];
for (int k = 0; k < 8; ++k)
for (int l = 0; l < 8; ++l) {
if ((k + l) % 2 == 1) {
if (board[i + k][j + l] == 'W')
++count;
if (board[i + k][j + l] == 'B')
++count2;
}
if ((k + l) % 2 == 0) {
if (board[i + k][j + l] == 'B')
++count;
if (board[i + k][j + l] == 'W')
++count2;
}
}
if (count < minCount)
minCount = count;
if (count2 < minCount)
minCount = count2;
}
}
cout << minCount;
return 0;
}

https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net