๋ฌธ์
์ง๋ฏผ์ด๋ ์์ ์ ์ ํ์์ MN๊ฐ์ ๋จ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ M*N ํฌ๊ธฐ์ ๋ณด๋๋ฅผ ์ฐพ์๋ค. ์ด๋ค ์ ์ฌ๊ฐํ์ ๊ฒ์์์ผ๋ก ์น ํด์ ธ ์๊ณ , ๋๋จธ์ง๋ ํฐ์์ผ๋ก ์น ํด์ ธ ์๋ค. ์ง๋ฏผ์ด๋ ์ด ๋ณด๋๋ฅผ ์๋ผ์ 8*8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
์ฒด์คํ์ ๊ฒ์์๊ณผ ํฐ์์ด ๋ฒ๊ฐ์์ ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ๊ฐ ์นธ์ด ๊ฒ์์๊ณผ ํฐ์ ์ค ํ๋๋ก ์์น ๋์ด ์๊ณ , ๋ณ์ ๊ณต์ ํ๋ ๋ ๊ฐ์ ์ฌ๊ฐํ์ ๋ค๋ฅธ ์์ผ๋ก ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด ์ ์๋ฅผ ๋ฐ๋ฅด๋ฉด ์ฒด์คํ์ ์์น ํ๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง๋ฟ์ด๋ค. ํ๋๋ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ, ํ๋๋ ๊ฒ์์์ธ ๊ฒฝ์ฐ์ด๋ค.
๋ณด๋๊ฐ ์ฒด์คํ์ฒ๋ผ ์น ํด์ ธ ์๋ค๋ ๋ณด์ฅ์ด ์์ด์, ์ง๋ฏผ์ด๋ 8*8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ์๋ผ๋ธ ํ์ ๋ช ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋ค์ ์น ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋น์ฐํ 8*8 ํฌ๊ธฐ๋ ์๋ฌด๋ฐ์๋ ๊ณจ๋ผ๋ ๋๋ค. ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ณด๋์ ๊ฐ ํ์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. B๋ ๊ฒ์์์ด๋ฉฐ, W๋ ํฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด
00. ๋จผ์ ๋งจ ์์ชฝ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ์ ๊ฒ์์์ธ ๊ฒฝ์ฐ ๋ณด๋ํ์ ๋ง๋ ๋ค(๊ธฐ์ค)
01. ๋ณด๋์ ์์์ ์ ์์๋ธ๋ค.
02. ํด๋น ์์์ ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ฅธ ๋ณด๋ํ๊ณผ ๊ธฐ์ค ๋ณด๋ํ์ ๋น๊ตํ๋ฉฐ ๋ค๋ฅผ ๋๋ง๋ค cnt๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
(์์ชฝ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ์ ๊ฒ์์์ธ ๊ฒฝ์ฐ ๋ชจ๋ ๋น๊ตํ์ฌ ๊ทธ ์ค ๋ ์ต์ ๊ฐ์๋ฅผ cnt๋ก ํ๋ค) <- ์ฝ์ง ์กฐ์ฌใ
03. ์ต์ ๊ฐ์์ cnt๋ฅผ ๋น๊ตํ๋ค.
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string board[50];
string WB[8] = {
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW"
};
string BW[8] = {
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB"
};
int WB_cnt(int x, int y){
int wb_cnt = 0;
for (int i=0; i<8; i++){
for (int j=0; j<8; j++){
if (board[x+i][y+j] != WB[i][j])
wb_cnt++;
}
}
return wb_cnt;
}
int BW_cnt(int x, int y){
int bw_cnt = 0;
for (int i=0; i<8; i++){
for (int j=0; j<8; j++){
if (board[x+i][y+j] != BW[i][j])
bw_cnt++;
}
}
return bw_cnt;
}
int main(){
int n, m, min_cnt=64;
cin >> n >> m;
for (int i=0; i<n; i++){
cin >> board[i];
}
for (int i=0; i+8<=n; i++){
for (int j=0; j+8<=m; j++){
int cnt = min(WB_cnt(i, j), BW_cnt(i, j));
if (min_cnt > cnt)
min_cnt = cnt;
}
}
cout << min_cnt;
}
์ฝ์ง
01. ์์ชฝ ์นธ์ด ํฐ์์ด๋ฉด ํฐ์์ผ๋ก ์์ํ๋ ์นธ๋ง ๋น๊ตํ๊ณ , ๊ฒ์์์ด๋ฉด ๊ฒ์์์ผ๋ก ์์ํ๋ ์นธ๋ง ๋น๊ตํ๋ค. ์์ชฝ ์นธ์ด ํฐ์์ด์ด๋ ๊ฒ์์์ผ๋ก ์์ํ๋ ์นธ์ ์น ํ๋ ๊ฒ ๋ ๋์ ์ ์๋ค๋ ๊ฑธ ์๊ฐ ๋ชปํ๋ค.
02. ๋ณ์ ์ด๋ฆ์ min์ผ๋ก ๋๋๋ ์ต์๊ฐ์ ๊ตฌํ๋ ํจ์ min๊ณผ ๊ฒน์ณ์ ์๊พธ ์๋ ์๋ฌ๊ฐ ๋ด๋ค(called object type 'int' is not a function or function pointer)
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1259๋ฒ : ํฐ๋ฆฐ๋๋กฌ์ (0) | 2021.08.30 |
---|---|
[๋ฐฑ์ค/C++] 1436๋ฒ : ์ํ๊ฐ๋ (0) | 2021.08.29 |
[๋ฐฑ์ค/C++] 7568๋ฒ : ๋ฉ์น (0) | 2021.08.29 |
[๋ฐฑ์ค/C++] 2231๋ฒ : ๋ถํดํฉ (0) | 2021.08.27 |
[๋ฐฑ์ค/C++] 2798๋ฒ : ๋ธ๋์ญ (0) | 2021.08.27 |
๋๊ธ