본문 바로가기

코딩 테스트

백준 1018 체스판

매일 1문제 이상 풀기 15일차.

 

풀고나서 더 쉬운 방법이 있었을 것 같은데 라는 생각을 하게 만드는 문제.

이런 문제는 풀고 나서도 찝찝하다.... 내 실력이 많이 부족하다는걸 알려주는 문제여서 그런 것 같다....

 

 

 

#include <iostream>
#include <math.h>

using namespace std;

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	char** bw;

	int a, b;
	int num = 0;
	cin >> a >> b;
	bw = new char* [a];

	for (int i = 0; i < a; ++i)
	{
		bw[i] = new char[b];
	}

	for (int i = 0; i < a; ++i)
	{
		for (int j = 0; j < b; ++j)
		{
			cin >> bw[i][j];
		}
	}


	int ch = 50000;

	for (int k = 0; k <= a - 8; ++k)
	{
		for (int m = 0; m <= b - 8; ++m)
		{
			int dif = 0;
			for (int j = k; j < 8 + k; ++j)
			{
				for (int i = m; i < 8 + m; ++i)
				{
					if (j % 2 == 0)
					{
						if (m % 2 == 0)
						{
							if (i % 2 == 0)
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
						}
						else
						{
							if (i % 2 != 0)
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
						}
						
					}
					else
					{
						if (m % 2 == 0)
						{
							if (i % 2 == 0)
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
						}
						else
						{
							if (i % 2 != 0)
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
						}
					}

				}
				
			}
			if (ch >= dif)
			{
				ch = dif;
			}
		}
	}

	for (int k = 0; k <= a - 8; ++k)
	{
		for (int m = 0; m <= b - 8; ++m)
		{
			int dif = 0;
			for (int j = k; j < 8 + k; ++j)
			{
				for (int i = m; i < 8 + m; ++i)
				{
					if (j % 2 == 0)
					{
						if (m % 2 == 0)
						{
							if (i % 2 == 0)
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
						}
						else
						{
							if (i % 2 != 0)
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
						}

					}
					else
					{
						if (m % 2 == 0)
						{
							if (i % 2 == 0)
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
						}
						else
						{
							if (i % 2 != 0)
							{
								if (bw[j][i] != 'B')
								{
									dif++;
								}
							}
							else
							{
								if (bw[j][i] != 'W')
								{
									dif++;
								}
							}
						}
					}

				}

			}
			if (ch >= dif)
			{
				ch = dif;
			}
		}
	}

	cout << ch;

	return 0;
}

'코딩 테스트' 카테고리의 다른 글

백준 1152  (0) 2023.06.24
백준 10814  (0) 2023.06.23
백준 10866  (0) 2023.06.20
백준 1920  (0) 2023.06.20
백준 10845  (0) 2023.06.19