반응형
문제 출처 :
https://www.acmicpc.net/problem/1018
알고리즘 분석 :
문제 해결에 필요한 사항
1. 구현
이 문제는 사실상 체스판 시작이 하얀색으로 시작하거나 검정색으로 시작하니
이 두가지 체스판의 경우만 비교해주면 쉽게 답을 낼 수 있다.
소스 코드 :
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
char board[52][52];
char whiteStartBoard[10][10] = {
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW"
};
char blackStartBoard[10][10] = {
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB"
};
int getWhiteStartBoard(int y, int x)
{
int cnt = 0;
for (int i = y; i < y + 8; i++)
for (int j = x; j < x + 8; j++)
if (board[i][j] != whiteStartBoard[i - y][j - x])
cnt++;
return cnt;
}
int getBlackStartBoard(int y, int x)
{
int cnt = 0;
for (int i = y; i < y + 8; i++)
for (int j = x; j < x + 8; j++)
if (board[i][j] != blackStartBoard[i - y][j - x])
cnt++;
return cnt;
}
int main(void)
{
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
scanf("%s", board[i]);
int result = 987654321;
for (int i = 0; i + 7 < n; i++)
for (int j = 0; j + 7 < m; j++)
result = min(result, min(getWhiteStartBoard(i, j), getBlackStartBoard(i, j)));
printf("%d", result);
return 0;
}
// This source code Copyright belongs to Crocus
// If you want to see more? click here >>
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[11번] Container With Most Water (0) | 2021.05.10 |
---|---|
[35번] Search Insert Position (0) | 2021.05.07 |
[17472번] 다리 만들기 2 (0) | 2020.03.14 |
[SwExpertAcademy] 아나그램 (0) | 2020.01.04 |
[17142번] 연구소 3 (0) | 2019.12.27 |