๋ฌธ์ :
https://www.acmicpc.net/problem/1018
ํ์ด :
์ธํ์ผ๋ก ์ฃผ์ด์ง ๋ฐฐ์ด๊ณผ ์ฃผ์ด์ง 8x8 ๋ฐฐ์ด๊ณผ cnn ๋ชจ๋ธ์ฒ๋ผ ํํฐ๋งํ๋ฏ์ด ๋น๊ตํ๋ ๋ฌธ์ ์๋ค. ๋ฐ๋ผ์ ๋ธ๋ฃจํธํฌ์ค๋ก ๋น๊ตํ ์ฒด์คํ์ ๋ฒ์๋ฅผ ๋จผ์ ์ ํ๊ณ , ๋ธ๋์ผ๋ก ์์ํ๋ ์ฒด์คํ or ํฐ์์ผ๋ก ์์ํ๋ ์ฒด์คํ ๋๊ฐ์ง ๊ฒฝ์ฐ์ ์์ ๋์กฐํ์ฌ min ๊ฐ์ ์ฐพ์๋ธ๋ค.
์ฐ์ for๋ฌธ์ด ๋ง๋ค๋ ์ ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ ๊น ๊ฑฑ์ ํ์ง๋ง
์ฒด์คํ์ ํฌ๊ธฐ M x N ์ (50 x 50)๊ณผ ๋ง๋ ์ฒด์คํ์ ํฌ๊ธฐ 8 x 8์ ๋๋ฒ ๋น๊ตํ๋ฏ๋ก ์ด
50 x 50 x 8 x 8 x 2 < 10^8 ์ด๋ฏ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋์ง๋ ์์๋ค.
c++ ์ฝ๋ :
//
// 1018_reDrawChess.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/09/10.
//
#include <stdio.h>
#include <iostream>
using namespace std;
int col, row;
string arr[51];
int min_val = 1000000;
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 cnt = 0;
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 8; j++)
{
if(arr[x+i][y+j] != WB[i][j])
cnt++;
}
}
return cnt;
}
int BW_cnt(int x, int y)
{
int cnt = 0;
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 8; j++)
{
if(arr[x+i][y+j] != BW[i][j])
cnt++;
}
}
return cnt;
}
int main() {
cin >> col >> row;
for(int i = 0; i < col; i++)
cin >> arr[i];
for(int i = 0; i + 8 <= col; i++)
{
for(int j = 0; j + 8 <= row; j++)
{
int tmp;
tmp = min(WB_cnt(i,j),BW_cnt(i,j));
if(tmp < min_val) {
min_val = tmp;
}
}
}
cout << min_val << '\n';
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 3020 ๊ฐ๋ฅ๋ฒ๋ prefix sum(๋์ ํฉ) (0) | 2022.02.21 |
---|---|
[๋ฐฑ์ค] 13549 ์จ๋ฐ๊ผญ์ง 3 dijkstra (0) | 2022.02.17 |
[๋ฐฑ์ค] 1969 DNA (0) | 2022.02.16 |
[๋ฐฑ์ค] 7576 ํ ๋งํ BFS (0) | 2021.12.10 |
[๋ฐฑ์ค] 15681 ํธ๋ฆฌ์ ์ฟผ๋ฆฌ DP + DFS (0) | 2021.09.09 |
๋๊ธ