https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
<코드>
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int M, N;
char board[51][51];
char wb[8][8] =
{
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W'
};
char bw[8][8] =
{
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B',
'B','W','B','W','B','W','B','W',
'W','B','W','B','W','B','W','B'
};
int white_first(int x, int y) {
int result = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (board[x + i][y + j] != wb[i][j])
result++;
}
}
return result;
}
int black_first(int x, int y) {
int result = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (board[x + i][y + j] != bw[i][j])
result++;
}
}
return result;
}
int main()
{
cin>>N>>M;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cin>>board[i][j];
}
}
int minresult = 123456789;
for(int i = 0; i + 8 <= N; i++)
{
for(int j = 0; j + 8 <= M; j++)
{
int res;
res = min(white_first(i,j),black_first(i,j));
if(res < minresult) {
minresult = res;
}
}
}
cout<<minresult<<'\n';
}
모든 경우의 수를 조사하는 브루트포스 알고리즘 문제이다. 우선적으로 wb, bw 배열은 흰색이 먼저오는것과 검은색이 먼저오는것의 배열을 미리 8*8로 만들어주었다. 흰색이 먼저인 경우와 검은색이 먼저인 경우를 비교해 값이 더 작은 것을 매 검사마다 갱신해줘야 한다.
<코드 참조>
https://codesyun.tistory.com/83
[BOJ / 백준] 1018번 체스판 다시 칠하기 C++ 문제 풀이
단계별로 풀어보기 - 브루트 포스 단계 - [4단계] 1018번 문제 문제 링크 : www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나..
codesyun.tistory.com
'PS > 브루트포스 알고리즘[Bruteforce]' 카테고리의 다른 글
백준 2503 숫자 야구(c++) (0) | 2022.10.19 |
---|---|
백준 1526 가장 큰 금민수(c++) (0) | 2022.10.19 |
백준 2303 숫자 게임(c++) (0) | 2022.10.15 |
백준 2003 수들의 합2(c++) (0) | 2022.10.14 |
백준 2851 슈퍼 마리오(c++) (1) | 2022.10.12 |