๐ป
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 1018. ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 1018. ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ
๋ํจ๋ 2020. 3. 1. 21:54๋ฌธ์
์ง๋ฏผ์ด๋ ์์ ์ ์ ํ์์ MN๊ฐ์ ๋จ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ M*N ํฌ๊ธฐ์ ๋ณด๋๋ฅผ ์ฐพ์๋ค. ์ด๋ค ์ ์ฌ๊ฐํ์ ๊ฒ์์์ผ๋ก ์น ํด์ ธ ์๊ณ , ๋๋จธ์ง๋ ํฐ์์ผ๋ก ์น ํด์ ธ ์๋ค. ์ง๋ฏผ์ด๋ ์ด ๋ณด๋๋ฅผ ์๋ผ์ 8*8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
์ฒด์คํ์ ๊ฒ์์๊ณผ ํฐ์์ด ๋ฒ๊ฐ์์ ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ๊ฐ ์นธ์ด ๊ฒ์์๊ณผ ํฐ์ ์ค ํ๋๋ก ์์น ๋์ด ์๊ณ , ๋ณ์ ๊ณต์ ํ๋ ๋ ๊ฐ์ ์ฌ๊ฐํ์ ๋ค๋ฅธ ์์ผ๋ก ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด ์ ์๋ฅผ ๋ฐ๋ฅด๋ฉด ์ฒด์คํ์ ์์น ํ๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง๋ฟ์ด๋ค. ํ๋๋ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ, ํ๋๋ ๊ฒ์์์ธ ๊ฒฝ์ฐ์ด๋ค.
๋ณด๋๊ฐ ์ฒด์คํ์ฒ๋ผ ์น ํด์ ธ ์๋ค๋ ๋ณด์ฅ์ด ์์ด์, ์ง๋ฏผ์ด๋ 8*8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ์๋ผ๋ธ ํ์ ๋ช ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋ค์ ์น ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋น์ฐํ 8*8 ํฌ๊ธฐ๋ ์๋ฌด๋ฐ์๋ ๊ณจ๋ผ๋ ๋๋ค. ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ณด๋์ ๊ฐ ํ์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. B๋ ๊ฒ์์์ด๋ฉฐ, W๋ ํฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
์์ ์ถ๋ ฅ1
1
์์ ์ ๋ ฅ2
์์ ์ถ๋ ฅ
12
์๊ฐ
1. ์์์ ์ ๊ธฐ์ค์ผ๋ก ๋ณด๋ฉด 8*8์ฌ์ด์ฆ์ด๋ฏ๋ก ๊ฐ๋ก๋ (n-8)์นธ, ์ธ๋ก๋ (m-8)์นธ ์ด๋ํ๊ฒ ๋๋ค.
2. (i,j) -> i+j๊ฐ ์ง์์ผ๋, i+j๊ฐ ํ์์ผ๋ ์์ด ๊ฐ์ ์์ด์ด์ผํ๋ค.
๋ผ๋ ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ, ์คํจํ๋ค. ์ด์ ๋ ์ฒซ๋ฒ์งธ ์นธ์ B๋ W๋ก ์น ํด์ก์ ๋, ํ๊ฐ์ง ๊ฒฝ์ฐ๋ง ๊ณ ๋ คํ๋ ๊ฒ ์คํจ์ ์์ธ์ด์๋ค. ์ฒซ๋ฒ์งธ ์นธ์ด B์ด๋ฉด BWBW... ํจํด์ผ๋ก ์์ ์น ํ๋ฉด ๋๋ค๊ณ ์๊ฐํ์๋ค.
์ฒ์์ ์์ฑํ ์คํจ ์ฝ๋
#include <iostream>
#define MAX 51
using namespace std;
int n,m;
char map[MAX][MAX];
int result = 9999999;
void paint(int x, int y){
int cnt = 0;
int color = map[x][y];
if((x + y) % 2 == 0){ // x+y๊ฐ ์ง์์ผ๋
for(int i=x; i<x+8; i++){
for(int j=y; j<y+8; j++){
if((i + j) % 2 == 0 && map[i][j] != color ){ // ์ง์์ ๋ค๋ฅธ ์์ผ ๋
cnt ++;
}else if((i + j) % 2 != 0 && map[i][j] == color){ //ํ์์ ๊ฐ์ ์์ผ ๋
cnt ++;
}
}
}
}else{ // ํ์์ผ๋
for(int i=x; i<x+8; i++){
for(int j=y; j<y+8; j++){
if((i + j) % 2 == 0 && map[i][j] == color ){ // ์ง์์ ๊ฐ์ ์์ผ ๋
cnt ++;
}else if((i + j) % 2 != 0 && map[i][j] != color){ //ํ์์ ๋ค๋ฅธ ์์ผ ๋
cnt ++;
}
}
}
}
result = min(result, cnt);
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> map[i][j];
}
}
int a = n - 8;
int b = m - 8;
for(int i=0; i<=a; i++){
for(int j=0; j<=b; j++){
paint(i, j);
}
}
cout << result << '\n';
return 0;
}
์์ฑํ ์ฝ๋
#include <iostream>
#include <algorithm>
#define MAX 51
using namespace std;
int n,m;
char map[MAX][MAX];
int result = 9999999;
void paint(int x, int y){
int cntW = 0;
int cntB = 0;
// B๋ก ์์์ผ๋
for(int i=x; i<x+8; i++){
for(int j=y; j<y+8; j++){
if((i + j) % 2 == 0){ // ์ง์
if(map[i][j] == 'W')
cntB ++;
}else { // ํ์
if(map[i][j] == 'B')
cntB ++;
}
}
}
// W๋ก ์์์ผ๋
for(int i=x; i<x+8; i++){
for(int j=y; j<y+8; j++){
if((i + j) % 2 == 0){ // ์ง์
if(map[i][j] == 'B')
cntW ++;
}else { // ํ์
if(map[i][j] == 'W')
cntW ++;
}
}
}
result = min(result, cntB);
result = min(result, cntW);
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> map[i][j];
}
}
int a = n - 8;
int b = m - 8;
for(int i=0; i<=a; i++){
for(int j=0; j<=b; j++){
paint(i, j);
}
}
cout << result << '\n';
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ฌธ์์ด์ฒ๋ฆฌ - 9935. ๋ฌธ์์ด ํญ๋ฐ (0) | 2020.03.05 |
---|---|
[๋ฐฑ์ค] ๋ค์ต์คํธ๋ผ - 6118. ์จ๋ฐ๊ผญ์ง(๋ฌธ์ ํธ๋์ค) (0) | 2020.03.04 |
[๋ฐฑ์ค] DFS์BFS - 11403. ๊ฒฝ๋ก ์ฐพ๊ธฐ (0) | 2020.03.01 |
[๋ฐฑ์ค] DFS์BFS - 1260.DFS์ BFS (0) | 2020.03.01 |
[๋ฐฑ์ค] DFS์BFS - 10026. ์ ๋ก์์ฝ (0) | 2020.02.28 |