💜개발과 일상 (≧∇≦)ノ

[백준 c++] 1018 체스판 다시 칠하기 (실4) 본문

CS/백준

[백준 c++] 1018 체스판 다시 칠하기 (실4)

강영서 2023. 2. 24. 17:05

📌 문제

M x N 보드를 8x8 크기 체스판으로 만들기 ( M,N <= 50 )

이때 8x8 체스판에서 다시 칠해야하는 정사각형의 최소 개수를 구하는 문제.

 

이 문제는 모든 경우의 수를 파악해야하기 때문에 8x8의 모든 경우의 수를 구하고

그 경우의 보드판을 모두 파악해야한다.

 

 

 

💻 정답 코드

#include <iostream>
using namespace std;

int main() {

	int N; cin >> N; 
	int M; cin >> M;

	char** arr = new char*[N]; 
	for (int i = 0; i < N; i++) { 
		arr[i] = new char[M]; 
		cin >> arr[i];
	}
	//모든 변수 선언 및 입력

	int min = 9999999999999;
	

	for (int k = 0; k < N - 7; k++) {
		for (int l = 0; l < M - 7; l++) {
			int CntB = 0;
			int CntW = 0;
		
			for (int i = k; i < 8 + k; i++) {
				for (int j = l; j < 8 + l; j++) {
					if ((i + j) % 2 == 0) {
						if (arr[i][j] == 'B')
							CntW++;
						else
							CntB++;
					}
					else {
						if (arr[i][j] == 'B')
							CntB++;
						else
							CntW++;
					}
				}

			}
			int temp = CntB < CntW ? CntB : CntW;
			min = temp < min ? temp : min;

		}
	}
	
	cout << min << endl;
	return 0;

}

'CS > 백준' 카테고리의 다른 글

[백준 c++] 9251 LCS (골5)  (0) 2023.04.03
[백준 c++] 2292 벌집 (블2)  (0) 2023.02.24
[백준 c++] 2798 블랙잭 2트 (블2)  (0) 2023.02.24
[백준 c++] 16139 인간-컴퓨터 상호작용 (실1)  (0) 2023.02.22
[백준 c++] 14501 퇴사 (실3)  (0) 2022.11.16