문제설명
https://www.acmicpc.net/problem/1018
소스코드
#include <iostream>
#include <algorithm>
using namespace std;
int** arr; //2차원 배열 동적할당을 위한 더블포인터 변수
int func(int x, int y)
{
int case1 = 0; int case2 = 0;
for (int i = x; i < x + 8; i++)
{
for (int j = y; j < y + 8; j++)
{
if ((i + j) % 2 == arr[i][j]) ++case1;
else if ((i + j + 1) % 2 == arr[i][j]) ++case2;
}
}
return min(case1, case2);
}
int main()
{
int N, M; int min = 1250;
char input;
cin >> N >> M;
arr = new int* [N]; //각 행의 수만큼 동적할당
for (int i = 0; i <= N; ++i) arr[i] = new int[M]; //각 열의 수만큼 동적할당
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cin >> input; //2차원 배열에 입력을 받음
if (input == 'B') arr[i][j] = 0; //B이면 0
else arr[i][j] = 1; //W이면 1
}
}
for (int i = 0; i <= N - 8; i++) //N-8이 행에서의 최대 행동반경
{
for (int j = 0; j <= M - 8; j++) //M-8이 열에서의 최대 행동반경
{
int minCount = func(i, j);
if (min > minCount) min = minCount; //가장 수정해야할 횟수가 적은 값을 저장
}
}
cout << min;
}
설명
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 13단계 - 2751번 문제 (수 정렬하기 2) (0) | 2023.07.13 |
---|---|
[C++] 백준 13단계 - 2750번 문제 (수 정렬하기) (0) | 2023.07.13 |
[C++] 백준 12단계 - 1436번 문제 (영화감독 숌) (0) | 2023.07.11 |
[C++] 백준 12단계 - 19532번 문제 (수학은 비대면강의입니다) (0) | 2023.07.10 |
[C++] 백준 20단계 - 18258번 문제 (큐 2) (0) | 2023.07.10 |