#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
'알고리즘 공부' 카테고리의 다른 글
백준 2609번 최대공약수와 최소공배수 C++ (0) | 2023.09.11 |
---|---|
백준 1259번 팰린드롬수 C++ (0) | 2023.09.06 |
백준 1697번 숨바꼭질 (0) | 2023.03.21 |
백준 7576번 토마토 (0) | 2023.03.16 |
백준 2178번 미로 탐색 (0) | 2023.03.16 |