728x90
https://www.acmicpc.net/problem/1018
1018๋ฒ: ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ
์ฒซ์งธ ์ค์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ณด๋์ ๊ฐ ํ์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. B๋ ๊ฒ์์์ด๋ฉฐ, W๋ ํฐ์์ด๋ค.
www.acmicpc.net
โจ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> white = {{ "WBWBWBWB" },{ "BWBWBWBW" },{ "WBWBWBWB" },{ "BWBWBWBW" },{ "WBWBWBWB" },{ "BWBWBWBW" },{ "WBWBWBWB" },{ "BWBWBWBW" }};
vector<string> black = { { "BWBWBWBW" },{ "WBWBWBWB" },{ "BWBWBWBW" },{ "WBWBWBWB" },{ "BWBWBWBW" },{ "WBWBWBWB" },{ "BWBWBWBW" },{ "WBWBWBWB" } };
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
vector<string> vec;
string temp;
int n, m;
int w=0, b=0, result=100;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> temp;
vec.push_back(temp);
}
for (int i = 0; i < n - 7; i++) {
for (int j = 0; j < m - 7; j++) {
//ํฐ์๋ถํฐ ์์ํ๋ ์ฒด์คํ๊ณผ ๋น๊ต
for (int x = i; x < i + 8; x++) {
for (int y = j; y < j + 8; y++) {
if (vec[x][y] != white[x - i][y - j]) {
w++;
}
}
}
//๊ฒ์์๋ถํฐ ์์ํ๋ ์ฒด์คํ๊ณผ ๋น๊ต
for (int x = i; x < i + 8; x++) {
for (int y = j; y < j + 8; y++) {
if (vec[x][y] != black[x - i][y - j]) {
b++;
}
}
}
//์ฐจ์ด๊ฐ ๋ ์์ ๊ฐ์ ์ ์ฅ
if (w > b) {
if (b < result) {
result = b;
}
}
else {
if (w < result) {
result = w;
}
}
w = 0;
b = 0;
}
}
cout << result;
return 0;
}
๐ ๋ฌธ์ ํ์ด
์ฒด์คํ์ ํฐ์๋ถํฐ ์์ํ๋ ์ฒด์คํ๊ณผ ๊ฒ์์๋ถํฐ ์์ํ๋ ์ฒด์คํ 2๊ฐ์ง๋ฐ์ ์กด์ฌํ์ง ์๋๋ค
๋ ์ข ๋ฅ์ ์ฒด์คํ์ ๋ฏธ๋ฆฌ ์ค์ ํด ๋๊ณ ,
ํด๋น ์ฒด์คํ๊ณผ ํ์ฌ ๋ณด๊ณ ์๋ 8*8 ํ์ ์๋ก ๋ค๋ฅธ ์นธ ๊ฐ์ ๊ตฌํ๋ฉด ํ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค
8*8์นธ์ ์์ ์์น๋ฅผ ์ด๋์๋ ๋ ์ ์์ผ๋ฏ๋ก, (0,0)๋ถํฐ (n-7,m-7)๊น์ง ์ ๋ถ๋ค ์๋ํด๋ณธ๋ค
โญ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ

728x90