๋ฌธ์
ํ์ด
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int row, col;
int map[8][8];
bool check[8][8];
/*๊ฐ์ผ*/
void infection(int R, int C) {
if (R > 0 && !check[R - 1][C] && map[R - 1][C] == 0) {
check[R - 1][C] = true;
infection(R - 1, C);
}
if (R < row && !check[R + 1][C] && map[R + 1][C] == 0) {
check[R + 1][C] = true;
infection(R + 1, C);
}
if (C > 0 && !check[R][C - 1] && map[R][C - 1] == 0) {
check[R][C - 1] = true;
infection(R, C - 1);
}
if (C < col && !check[R][C + 1] && map[R][C + 1] == 0) {
check[R][C + 1] = true;
infection(R, C + 1);
}
}
/*๋ฒฝ ์ธ์ฐ๊ธฐ*/
int setWall(int x, int y, int count) {
int result = 0;
// ๋ฒฝ์ 3๊ฐ ๋ชจ๋ ์ธ์ฐ๋ฉด,
if (count == 3) {
// ๋ฐ์ด๋ฌ์ค ์ฐพ์์ ๊ฐ์ผํจ์ ํธ์ถํ๊ณ
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (map[i][j] == 2) infection(i, j);
}
}
// ์์ ์ง์ญ ๊ฒ์ฌํด ๋์ด ๋ฐํ
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
if (map[i][j] == 0 && !check[i][j]) result++;
memset(check, false, sizeof(check));
return result;
}
// ๋ฒฝ์ ์ธ์ฐ๋ ๊ฒฝ์ฐ ์ฌ๊ทํธ์ถ
int R, C;
for (int i = col * x + y; i < row * col; i++) {
R = i / col; C = i % col;
if (map[R][C] == 0) {
map[R][C] = 1;
result = max(result, setWall(R, C, count + 1));
map[R][C] = 0;
}
}
return result;
}
int main() {
cin >> row >> col;
memset(map, 1, sizeof(map));
memset(check, false, sizeof(check));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cin >> map[i][j];
}
}
cout << setWall(0, 0, 0) << endl;
return 0;
}
์ฒ์์ ํ์๊ณผ ์ญํ ์ ๋๋ ํ๋ค๊ฐ, ๊ตฌํ์ ์๋ก ๋ค๋ฅด๊ฒ ํ์ฌ ํผ์ ์ด ์กฐ๊ธ ์์๋ค. ์ฐ์์ข์ํ๋ค ๋ด๊ฐ ๋งก์ ๋ถ๋ถ์์ ๋นต๊พธ๊ฐ ๋์ ์ข ๋ฏธ์ํ๋ค. ์ญํ ์ ๋๋๋ ๊ฒฝ์ฐ ํ์๊ณผ ๋ช ํํ๊ฒ ๊ตฌ์์ ํ๊ณ ์ฝ๋ฉ์ ์ฐฉ์ํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ตํ์ ์ป์๋ค. ์ง์ ์์ ๊ตฌํํ๋ ค ํ๋ ๋ฐฉํฅ๋๋ก ๊ตฌํํด ๋ณด์๋ค.
'๐ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] โพ (๋ฐฑ์ค, 17281) (0) | 2020.11.20 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] 2048(Easy) (๋ฐฑ์ค, 12100) (0) | 2020.11.20 |
[์๊ณ ๋ฆฌ์ฆ] ์ ์ ์ผ๊ฐํ (๋ฐฑ์ค, 1932) (0) | 2020.11.20 |
[์๊ณ ๋ฆฌ์ฆ] N-Queen (๋ฐฑ์ค, 9663) (0) | 2020.11.20 |
[์๊ณ ๋ฆฌ์ฆ] ์นด๋ผ์ถ๋ฐ์ ๋น ๋ฅธ ๊ณฑ์ (Karatsuba) (1) | 2020.07.28 |