Notice
Recent Posts
Recent Comments
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
Tags more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐ŸŒฒ์ž๋ผ๋‚˜๋Š”์ฒญ๋…„

[๋ฐฑ์ค€] Q10026 ์ ๋ก์ƒ‰์•ฝ(java) ๋ณธ๋ฌธ

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

[๋ฐฑ์ค€] Q10026 ์ ๋ก์ƒ‰์•ฝ(java)

JihyunLee 2019. 9. 26. 22:02
๋ฐ˜์‘ํ˜•

dfs์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ํ’€์—ˆ๋‹ค.

 

 

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
import java.util.Scanner;
 
public class Q10026_1{
    static char[][] map;
    static int[][] visit1;
    static int[][] visit2;
    static int[] x = {-1,0,1,0};
    static int[] y = {0,1,0,-1};
    static int N;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        N = Integer.parseInt(scan.nextLine());
        map = new char[N][N]; 
        for(int i=0; i<N; i++){
            String temp = scan.nextLine();
            //System.out.println(temp);
            for(int j=0; j<N; j++){
                map[i][j] = temp.charAt(j);
            }    
        }
 
        int part1 =0;
        int part2 =0;
 
        visit1 = new int[N][N];
        visit2 = new int[N][N];
 
        for(int i=0 ;i<N; i++){
            for(int j=0; j<N; j++){
                if(visit1[i][j] == 0){
                    dfs1(i,j);
                    part1++;
                }
            }
        }
 
        for(int i=0 ;i<N; i++){
            for(int j=0; j<N; j++){
                if(visit2[i][j] == 0){
                    dfs2(i,j);
                    part2++;
                }
            }
        }
 
        System.out.println(part1);
        System.out.println(part2);
 
    }
 
 
 
public static void dfs1(int i, int j){
    char c = map[i][j];
    for(int k=0; k<4; k++){
        int ni = i +x[k];
        int nj = j + y[k];
         if(ni>=0 && ni<&& nj>=0 && nj<N){
            if(c == map[ni][nj] && visit1[ni][nj]==0){
                visit1[ni][nj] = 1;
                dfs1(ni,nj);
            }
        }
    }
}
 
//red-green blind
public static void dfs2(int i, int j){
    char c = map[i][j];
    for(int k=0; k<4; k++){
        int ni = i +x[k];
        int nj = j + y[k];
         if(ni>=0 && ni<&& nj>=0 && nj<N){
            if(c == 'B'){
                if(c == map[ni][nj] && visit2[ni][nj]==0){
                    visit2[ni][nj] = 1;
                    dfs2(ni,nj);
                }
            }else{
                if((map[ni][nj] == 'R' || map[ni][nj] == 'G'&& visit2[ni][nj]==0){
                    visit2[ni][nj] = 1;
                    dfs2(ni,nj);
                }
            }
        }
    }
}
 
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs
๋ฐ˜์‘ํ˜•