๐ป
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 14503. ๋ก๋ด ์ฒญ์๊ธฐ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 14503. ๋ก๋ด ์ฒญ์๊ธฐ
๋ํจ๋ 2020. 3. 23. 22:36๋ฌธ์
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฒญ์ํ๋ ์์ญ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ์ฅ์๋ N×M ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ผ๋ก ๋ํ๋ผ ์ ์์ผ๋ฉฐ, 1×1ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๊ฐ๊ฐ์ ์นธ์ ๋ฒฝ ๋๋ ๋น ์นธ์ด๋ค. ์ฒญ์๊ธฐ๋ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด ์์ผ๋ฉฐ, ์ด ๋ฐฉํฅ์ ๋, ์, ๋จ, ๋ถ์ค ํ๋์ด๋ค. ์ง๋์ ๊ฐ ์นธ์ (r, c)๋ก ๋ํ๋ผ ์ ์๊ณ , r์ ๋ถ์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์, c๋ ์์ชฝ์ผ๋ก ๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์์ด๋ค.
๋ก๋ด ์ฒญ์๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค.
- ํ์ฌ ์์น๋ฅผ ์ฒญ์ํ๋ค.
- ํ์ฌ ์์น์์ ํ์ฌ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ๋ฐฉํฅ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์์ ์งํํ๋ค.
- ์ผ์ชฝ ๋ฐฉํฅ์ ์์ง ์ฒญ์ํ์ง ์์ ๊ณต๊ฐ์ด ์กด์ฌํ๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๋ค์ ํ ์นธ์ ์ ์งํ๊ณ 1๋ฒ๋ถํฐ ์งํํ๋ค.
- ์ผ์ชฝ ๋ฐฉํฅ์ ์ฒญ์ํ ๊ณต๊ฐ์ด ์๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ์ด๋ฏธ ๋์ด์๊ฑฐ๋ ๋ฒฝ์ธ ๊ฒฝ์ฐ์๋, ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ์ด๋ฏธ ๋์ด์๊ฑฐ๋ ๋ฒฝ์ด๋ฉด์, ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
๋ก๋ด ์ฒญ์๊ธฐ๋ ์ด๋ฏธ ์ฒญ์๋์ด์๋ ์นธ์ ๋ ์ฒญ์ํ์ง ์์ผ๋ฉฐ, ๋ฒฝ์ ํต๊ณผํ ์ ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ธ๋ก ํฌ๊ธฐ N๊ณผ ๊ฐ๋ก ํฌ๊ธฐ M์ด ์ฃผ์ด์ง๋ค. (3 ≤ N, M ≤ 50)
๋์งธ ์ค์ ๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ์นธ์ ์ขํ (r, c)์ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ d๊ฐ ์ฃผ์ด์ง๋ค. d๊ฐ 0์ธ ๊ฒฝ์ฐ์๋ ๋ถ์ชฝ์, 1์ธ ๊ฒฝ์ฐ์๋ ๋์ชฝ์, 2์ธ ๊ฒฝ์ฐ์๋ ๋จ์ชฝ์, 3์ธ ๊ฒฝ์ฐ์๋ ์์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์๋ ๊ฒ์ด๋ค.
์ ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ฅ์์ ์ํ๊ฐ ๋ถ์ชฝ๋ถํฐ ๋จ์ชฝ ์์๋๋ก, ๊ฐ ์ค์ ์์ชฝ๋ถํฐ ๋์ชฝ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋น ์นธ์ 0, ๋ฒฝ์ 1๋ก ์ฃผ์ด์ง๋ค. ์ง๋์ ์ฒซ ํ, ๋ง์ง๋ง ํ, ์ฒซ ์ด, ๋ง์ง๋ง ์ด์ ์๋ ๋ชจ๋ ์นธ์ ๋ฒฝ์ด๋ค.
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ์นธ์ ์ํ๋ ํญ์ ๋น ์นธ์ด๋ค.
์ถ๋ ฅ
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์ฒญ์ํ๋ ์นธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
3 3
1 1 0
1 1 1
1 0 1
1 1 1
์์ ์ถ๋ ฅ1
1
์์ ์ ๋ ฅ2
11 10
7 4 0
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 1 1 0 1
1 0 0 1 1 0 0 0 0 1
1 0 1 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 1 1 0 1
1 0 0 0 0 0 1 1 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
์์ ์ถ๋ ฅ2
57
์๊ฐ
๋ฐฉํฅ์ด ์ฃผ์ด์ ธ์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ฐจ๋ก๋๋ก ํ์ํ๋ค๋ ๊ฒ๊ณผ ๋ค์นธ์ด ๋ชจ๋ ์ฒญ์๊ฐ ๋์์ ๋๋ ํ ์นธ์ ํ์งํ๊ณ ๋์๊ฐ๋ค๋ ๋ถ๋ถ์ด ๊น๋ค๋ก์ ๋ ๊ฑฐ ๊ฐ๋ค. ๋ฐฉํฅ ๋ฐฐ์ด์ dx,dy๋ก ์ฐจ๋ก๋๋ก ๋ถ, ๋, ๋จ, ์(0, 1, 2, 3) ์ผ๋ก ํด์คฌ๊ณ , ํ์ง ๋ฐฐ์ด์ bx, by๋ก ๋์ด์ ๋ถ, ๋, ๋จ, ์์์ ์ผ์ชฝ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๊ฐ์ธ ์, ๋ถ, ๋, ๋จ ์ผ๋ก ๋ฐฉํฅ๊ฐ์ ์ค์ ํด์ฃผ์๋ค.
๋ฌธ์ ์ดํด๋ ์๋๊ณ ๋ณต์กํด์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋๋ฐ ๋ณด๊ณ ๋์ ํ์ด๋ณด๋ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์๋ ๊ฑฐ ๊ฐ๋ค. ์๋ฎฌ๋ ์ด์ ๋ฌธ์ ์์๋ ๋ฐฉํฅ ๊ด๋ จํด์ ๋ง์ด ์ถ์ ๋๋ ๊ฒ ๊ฐ์๋ฐ ์ข ๋ ์ต์ํด์ ธ์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
์์ฑํ ์ฝ๋
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
|
#include <iostream>
using namespace std;
int n, m;
int map[50][50];
bool visited[50][50];
// ๋ถ, ๋, ๋จ, ์
int dx[] = { -1, 0, 1, 0};
int dy[] = { 0, 1, 0, -1};
// ์, ๋ถ, ๋, ๋จ
int bx[] = { 1, 0, -1, 0};
int by[] = { 0, -1, 0, 1};
int cnt = 0;
void dfs(int x, int y, int d){
bool flag = true;
if(map[x][y] == 0){ //์ฒญ์๊ฐ ๊ฐ๋ฅํ ์นธ์ธ์ง ์ฒดํฌ
cnt ++;
map[x][y] = 2; //์ฒญ์ํ์
}
for(int i=d-1; i>d-5; i--){
int dir = (i+4)%4; //๋ฐฉํฅ์ ํ
int nx = x + dx[dir];
int ny = y + dy[dir];
if(nx<0 || ny<0 || nx>=n || ny>=m) continue;
if(map[nx][ny] == 0){ //์ฒญ์๊ฐ ๊ฐ๋ฅํ ์นธ์ธ์ง ์ฒดํฌ
dfs(nx, ny, dir);
return;
}
}
if(map[x+bx[d]][y+by[d]] == 1){ //ํ์ง์ด ๋ถ๊ฐ๋ฅํ ์นธ
flag = false;
}else if(flag){ //ํ์ง์ด ๊ฐ๋ฅํ ์นธ
dfs(x+bx[d], y+by[d], d);
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int r, c, d;
cin >> n >> m;
cin >> r >> c >> d;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> map[i][j];
}
}
dfs(r, c, d);
cout << cnt <<"\n";
return 0;
}
Colored by Color Scripter
|
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 2455. ์ง๋ฅํ ๊ธฐ์ฐจ (0) | 2020.03.31 |
---|---|
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 11052. ์นด๋ ๊ตฌ๋งคํ๊ธฐ (0) | 2020.03.27 |
[๋ฐฑ์ค] ๋ฐฑํธ๋ํน - 9207. ํ๊ทธ ์๋ฆฌํ ์ด (0) | 2020.03.23 |
[๋ฐฑ์ค] ์กฐํฉ๋ก - 5557. 1ํ๋ (0) | 2020.03.21 |
[๋ฐฑ์ค] ๋ถ๋ฅ์์ - 16916. ๋ถ๋ถ ๋ฌธ์์ด (0) | 2020.03.20 |