๐Ÿ’ป

[๋ฐฑ์ค€] ๋ฐฑํŠธ๋ž˜ํ‚น - 9207. ํŽ˜๊ทธ ์†”๋ฆฌํ…Œ์–ด ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ๋ฐฑํŠธ๋ž˜ํ‚น - 9207. ํŽ˜๊ทธ ์†”๋ฆฌํ…Œ์–ด

๋˜ํšจ๋‹ˆ 2020. 3. 23. 22:22

๋ฌธ์ œ

ํŽ˜๊ทธ ์†”๋ฆฌํ…Œ์–ด๋Š” ๊ตฌ๋ฉ์ด ๋šซ๋ ค์žˆ๋Š” ์ด์ฐจ์› ๊ฒŒ์ž„ํŒ์—์„œ ํ•˜๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๊ฐ ๊ตฌ๋ฉ์—๋Š” ํ•€์„ ํ•˜๋‚˜ ๊ฝ‚์„ ์ˆ˜ ์žˆ๋‹ค.

ํ•€์€ ์ˆ˜ํ‰, ์ˆ˜์ง ๋ฐฉํ–ฅ์œผ๋กœ ์ธ์ ‘ํ•œ ํ•€์„ ๋›ฐ์–ด๋„˜์–ด์„œ ๊ทธ ํ•€์˜ ๋‹ค์Œ ์นธ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ๋งŒ ํ—ˆ์šฉ๋œ๋‹ค. ์ธ์ ‘ํ•œ ํ•€์˜ ๋‹ค์Œ ์นธ์€ ๋น„์–ด์žˆ์–ด์•ผ ํ•˜๊ณ  ๊ทธ ์ธ์ ‘ํ•œ ํ•€์€ ์ œ๊ฑฐ๋œ๋‹ค.

ํ˜„์žฌ ๊ฒŒ์ž„ํŒ์— ๊ฝ‚ํ˜€์žˆ๋Š” ํ•€์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํ•€์„ ์ ์ ˆํžˆ ์›€์ง์—ฌ์„œ ๊ฒŒ์ž„ํŒ์— ๋‚จ์•„์žˆ๋Š” ํ•€์˜ ๊ฐœ์ˆ˜๋ฅผ ์ตœ์†Œ๋กœ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋˜, ๊ทธ๋ ‡๊ฒŒ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ์†Œ ์ด๋™ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ 1 ≤ N ≤ 100์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๊ฒŒ์ž„ํŒ์˜ ์ดˆ๊ธฐ ์ƒํƒœ์ด๋‹ค.

๊ฒŒ์ž„ํŒ์€ ๋ชจ๋‘ ๊ฐ™์€ ๋ชจ์–‘์„ ๊ฐ€์ง„๋‹ค. (์˜ˆ์ œ ์ฐธ๊ณ ) '.'๋Š” ๋นˆ ์นธ, 'o'๋Š” ํ•€์ด ๊ฝ‚ํ˜€์žˆ๋Š” ์นธ, '#'๋Š” ๊ตฌ๋ฉ์ด ์—†๋Š” ์นธ์ด๋‹ค. ํ•€์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 8์ด๋ฉฐ, ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋นˆ ์ค„๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ๋‹ค.

 

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ํ•€์„ ์›€์ง์—ฌ์„œ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ํ•€์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜์™€ ๊ทธ ๊ฐœ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

3
###...###
..oo.....
.....oo..
.........
###...###

###...###
..oo.o...
...o.oo..
...oo....
###...###

###o..###
.o.oo....
o.o......
.o.o.....
###...###

 

์˜ˆ์ œ ์ถœ๋ ฅ1

1 3 

1 7 

1 7

 

์ƒ๊ฐ

 

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

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
#include <iostream>
 
using namespace std;
 
char map[6][10];
 
// ์ƒ, ํ•˜, ์ขŒ, ์šฐ
int dx[] = {-1100};
int dy[] = {00-11};
 
int p_num, m_num;
int num;
 
void dfs(int x, int y, int n){
    if(p_num == 0 || p_num > n){
        p_num = n;
        m_num = num - n;
    }
    
    for(int k=0; k<4; k++){
        // ๋‹ค์Œ ์นธ
        int nx = x+dx[k]; 
        int ny = y+dy[k];
        
        if(nx < 0 || ny < 0 || nx >= 5 || ny >=9 ) continue;
 
        // ๋‹ค์Œ ์นธ์ด o์ด๊ณ   
        if(map[nx][ny] == 'o'){
            // ๋‹ค์Œ๋‹ค์Œ์นธ
            int nnx = nx + dx[k];
            int nny = ny + dy[k];
            if(nnx < 0 || nny < 0 || nnx >= 5 || nny >=9 ) continue;
 
            // ๋‹ค์Œ ๋‹ค์Œ ์นธ์ด ๋น„์–ด์žˆ์œผ๋ฉด
            if(map[nnx][nny] == '.'){
                map[x][y] = map[nx][ny] = '.';
                map[nnx][nny] = 'o';
 
                for(int i=0; i<5; i++){
                    for(int j=0; j<9; j++){
                        if(map[i][j] == 'o'){
                            dfs(i, j, n-1);
                        }
                    }
                }
                map[x][y] = map[nx][ny] = 'o';
                map[nnx][nny] = '.';
            }
        }
    }    
    return;
}
 
int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int n;
    cin >> n;
 
    while(n--){
        p_num = m_num = 0;
        int cnt = 0// ํ•€ ๊ฐœ์ˆ˜ ์ฒดํฌ
        for(int i=0; i<5; i++){
            for(int j=0; j<9; j++){
                cin >> map[i][j];
                if(map[i][j]=='o') cnt ++;
            }
        }
        num = cnt;
        for(int i=0; i<5; i++){
            for(int j=0; j<9; j++){
                if(map[i][j] == 'o'){
                    dfs(i, j, cnt);
                }
            }
        }
 
        cout << p_num << " " << m_num << "\n";
    }
   
    return 0;
}
 
Colored by Color Scripter
๋ฐ˜์‘ํ˜•
Comments