๐ป
[๋ฐฑ์ค] DFS์BFS - 14502. ์ฐ๊ตฌ์ ๋ณธ๋ฌธ
[๋ฐฑ์ค] DFS์BFS - 14502. ์ฐ๊ตฌ์
๋ํจ๋ 2020. 4. 8. 12:59๋ฌธ์
์ธ์ฒด์ ์น๋ช ์ ์ธ ๋ฐ์ด๋ฌ์ค๋ฅผ ์ฐ๊ตฌํ๋ ์ฐ๊ตฌ์์์ ๋ฐ์ด๋ฌ์ค๊ฐ ์ ์ถ๋์๋ค. ๋คํํ ๋ฐ์ด๋ฌ์ค๋ ์์ง ํผ์ง์ง ์์๊ณ , ๋ฐ์ด๋ฌ์ค์ ํ์ฐ์ ๋ง๊ธฐ ์ํด์ ์ฐ๊ตฌ์์ ๋ฒฝ์ ์ธ์ฐ๋ ค๊ณ ํ๋ค.
์ฐ๊ตฌ์๋ ํฌ๊ธฐ๊ฐ N×M์ธ ์ง์ฌ๊ฐํ์ผ๋ก ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ์ง์ฌ๊ฐํ์ 1×1 ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ์ฐ๊ตฌ์๋ ๋น ์นธ, ๋ฒฝ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๋ฒฝ์ ์นธ ํ๋๋ฅผ ๊ฐ๋ ์ฐจ์งํ๋ค.
์ผ๋ถ ์นธ์ ๋ฐ์ด๋ฌ์ค๊ฐ ์กด์ฌํ๋ฉฐ, ์ด ๋ฐ์ด๋ฌ์ค๋ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋น ์นธ์ผ๋ก ๋ชจ๋ ํผ์ ธ๋๊ฐ ์ ์๋ค. ์๋ก ์ธ์ธ ์ ์๋ ๋ฒฝ์ ๊ฐ์๋ 3๊ฐ์ด๋ฉฐ, ๊ผญ 3๊ฐ๋ฅผ ์ธ์์ผ ํ๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ด ์ฐ๊ตฌ์๊ฐ ์๊ธด ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
2 0 0 0 1 1 0
0 0 1 0 1 2 0
0 1 1 0 1 0 0
0 1 0 0 0 0 0
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0
์ด๋, 0์ ๋น ์นธ, 1์ ๋ฒฝ, 2๋ ๋ฐ์ด๋ฌ์ค๊ฐ ์๋ ๊ณณ์ด๋ค. ์๋ฌด๋ฐ ๋ฒฝ์ ์ธ์ฐ์ง ์๋๋ค๋ฉด, ๋ฐ์ด๋ฌ์ค๋ ๋ชจ๋ ๋น ์นธ์ผ๋ก ํผ์ ธ๋๊ฐ ์ ์๋ค.
2ํ 1์ด, 1ํ 2์ด, 4ํ 6์ด์ ๋ฒฝ์ ์ธ์ด๋ค๋ฉด ์ง๋์ ๋ชจ์์ ์๋์ ๊ฐ์์ง๊ฒ ๋๋ค.
2 1 0 0 1 1 0
1 0 1 0 1 2 0
0 1 1 0 1 0 0
0 1 0 0 0 1 0
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0
๋ฐ์ด๋ฌ์ค๊ฐ ํผ์ง ๋ค์ ๋ชจ์ต์ ์๋์ ๊ฐ์์ง๋ค.
2 1 0 0 1 1 2
1 0 1 0 1 2 2
0 1 1 0 1 2 2
0 1 0 0 0 1 2
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0
๋ฒฝ์ 3๊ฐ ์ธ์ด ๋ค, ๋ฐ์ด๋ฌ์ค๊ฐ ํผ์ง ์ ์๋ ๊ณณ์ ์์ ์์ญ์ด๋ผ๊ณ ํ๋ค. ์์ ์ง๋์์ ์์ ์์ญ์ ํฌ๊ธฐ๋ 27์ด๋ค.
์ฐ๊ตฌ์์ ์ง๋๊ฐ ์ฃผ์ด์ก์ ๋ ์ป์ ์ ์๋ ์์ ์์ญ ํฌ๊ธฐ์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋์ ์ธ๋ก ํฌ๊ธฐ N๊ณผ ๊ฐ๋ก ํฌ๊ธฐ M์ด ์ฃผ์ด์ง๋ค. (3 ≤ N, M ≤ 8)
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋์ ๋ชจ์์ด ์ฃผ์ด์ง๋ค. 0์ ๋น ์นธ, 1์ ๋ฒฝ, 2๋ ๋ฐ์ด๋ฌ์ค๊ฐ ์๋ ์์น์ด๋ค. 2์ ๊ฐ์๋ 2๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
๋น ์นธ์ ๊ฐ์๋ 3๊ฐ ์ด์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ป์ ์ ์๋ ์์ ์์ญ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
7 7
2 0 0 0 1 1 0
0 0 1 0 1 2 0
0 1 1 0 1 0 0
0 1 0 0 0 0 0
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0
์์ ์ถ๋ ฅ1
27
์์ ์ ๋ ฅ2
4 6
0 0 0 0 0 0
1 0 0 0 0 2
1 1 1 0 0 2
0 0 0 0 0 2
์์ ์ถ๋ ฅ2
9
์์ ์ ๋ ฅ3
8 8
2 0 0 0 0 0 0 2
2 0 0 0 0 0 0 2
2 0 0 0 0 0 0 2
2 0 0 0 0 0 0 2
2 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
์์ ์ถ๋ ฅ3
3
์๊ฐ
์ด ๋ฌธ์ ๋ ๋ ๊ฐ์ง๋ก ๋๋์ด ์๊ฐํ ์ ์๋ค.
1. ๋ฒฝ์ ์ธ์ฐ๋ ๊ฒ
2. ๋ฐ์ด๋ฌ์ค๋ฅผ ํผ๋จ๋ฆฌ๋ ๊ฒ
---> ์ด๋์ ํ๋ฆฐ ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค....
์์ฑํ ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
// 1. ๋ฒฝ์ ์ธ์ฐ๋ ๊ฒ
// 2. ๋ฐ์ด๋ฌ์ค๋ฅผ ํผ๋จ๋ฆฌ๋ ๊ฒ
int n, m;
int map[8][8];
int ans = 0;
vector<pair<int, int> > v;
// ์, ํ, ์ข, ์ฐ
int dx[4] = { 0, 0, -1, 1 };
int dy[4] = { -1, 1, 0, 0 };
void bfs();
// ๋ฒฝ ๋ง๋ค๊ธฐ
void dfs(int cnt){
if(cnt == 3){
bfs();
return;
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(map[i][j]==0){
map[i][j] = 1;
dfs(cnt+1);
map[i][j] = 0;
}
}
}
}
// ๋ฐ์ด๋ฌ์ค ํผํธ๋ฆฌ๊ธฐ
void bfs(){
int temp[8][8];
memcpy(temp, map, sizeof(map));
queue<pair<int,int> > q;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(temp[i][j] == 2){
q.push(make_pair(i,j));
}
}
}
while(!q.empty()){
int x = q.front().first;
int y = q.front().second;
q.pop();
for(int i=0; i<4; i++){
int nx = x + dx[i];
int ny = y + dy[i];
if(nx<0 || ny<0 || nx>=n || ny>=n) continue;
// ๋ฒฝ ์ธ์ฐ๊ธฐ
if(temp[nx][ny]==0){
temp[nx][ny] = 2;
q.push(make_pair(nx,ny));
}
}
}
// ์์ ๊ตฌ์ญ์ ๊ฐ์ ์ธ๊ธฐ
int safe=0;
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
if(temp[i][j]==0)
safe++;
}
}
//์ต๋๊ฐ ๊ณ์ฐ
ans = max(ans, safe);
}
int main(int argc, const char *argv[])
{
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> map[i][j];
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(map[i][j]==0){
map[i][j] = 1;
dfs(1);
map[i][j] = 0;
}
}
}
cout << ans << "\n";
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][์ผ์ฑ SW์ญ๋ํ ์คํธ] 15685. ๋๋๊ณค ์ปค๋ธ (0) | 2020.04.21 |
---|---|
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 14889. ์คํํธ์ ๋งํฌ (0) | 2020.04.19 |
[๋ฐฑ์ค] ๋ฌธ์์ด ์ฒ๋ฆฌ - 1764. ๋ฃ๋ณด์ก (0) | 2020.04.06 |
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 2193. ์ด์น์ (0) | 2020.04.02 |
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 2455. ์ง๋ฅํ ๊ธฐ์ฐจ (0) | 2020.03.31 |