import java.util.Scanner; public class Main { static int size; static char arr[][]; static boolean visit[][]; static int result1; static int result2; static int dx[]= {-1,0,1,0}; static int dy[]= {0,1,0,-1}; public static void main(String[] args) { Scanner sc = new Scanner(System.in); size= sc.nextInt(); sc.nextLine(); arr= new char[size][size]; visit=new boolean[size][size]; for(int i=0;i<size;i++) { String s = sc.nextLine(); for(int j=0;j<size;j++) { arr[i][j]=s.charAt(j); } } for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { if(visit[i][j]==false) { result1++; char temp=arr[i][j]; DFS(i,j,temp); } } } for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { if(arr[i][j]=='G') { arr[i][j]='R'; } } } checkVisit(); for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { if(visit[i][j]==false) { result2++; char temp= arr[i][j]; DFS(i,j,temp); } } } System.out.print(result1+" "+result2); } private static void checkVisit() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { visit[i][j]=false; } } } private static void DFS(int x, int y,char temp) { visit[x][y]=true; for(int i=0;i<4;i++) { int rx= x+dx[i]; int ry=y+dy[i]; if(rx<0||ry<0||ry>=size||rx>=size) { continue; }if(visit[rx][ry]==true) { continue; }if(arr[rx][ry]!=temp) { continue; }if(arr[rx][ry]==temp&&visit[rx][ry]==false) { visit[rx][ry]=true; DFS(rx,ry,temp); } } return; } }
'코딩테스트(백준)' 카테고리의 다른 글
[백준] 15650 : N과M(2) - JAVA(자바) - 사좋배 공유 (0) | 2020.03.03 |
---|---|
[백준] 15649 : N과M(1) - JAVA(자바) - 사좋배 공유 (0) | 2020.03.03 |
[백준] 10026 : 적록색약 -JAVA(자바) - 사좋배 공유 (0) | 2020.03.03 |
[백준] 2309 : 일곱 난쟁이 - JAVA(자바) - 사좋배 공유 (0) | 2020.03.03 |
[백준] 1012 : 유기농 배추 - JAVA(자바) - 사좋배 공유 (0) | 2020.03.03 |