import java.util.Arrays; import java.util.Scanner; public class Main { static int arr[][]; static boolean visit[][]; static int sizex; static int sizey; static int area_count; static int count; static int dy[] = {0,-1,0,1,0}; static int dx[] = {0,0,1,0,-1}; static int ct[]; public static void main(String[] args) { Scanner sc= new Scanner(System.in); sizey=sc.nextInt(); sizex=sc.nextInt(); area_count= sc.nextInt(); arr = new int[101][101]; visit = new boolean[101][101]; ct= new int[101]; count=0; int sum; int cnt=1; for(int t=0;t<area_count;t++) { int startx = sc.nextInt(); int starty= sc.nextInt(); int desx = sc.nextInt(); int desy= sc.nextInt(); for(int i=starty;i<desy;i++) { for(int j=startx;j<desx;j++) { arr[i][j]=-1; visit[i][j]=true; } } } // for(int i=0;i<arr.length;i++) { // for(int j=0;j<arr[i].length;j++) { // System.out.print(arr[i][j]); // } // System.out.println(); // } //출력 for(int i=0;i<sizey;i++) { for(int j=0;j<sizex;j++) { if(arr[i][j]==0) { ++count; dfs(i, j); } } } System.out.println(count); Arrays.sort(ct); for(int i=1;i<ct.length;i++) { if(ct[i]!=0) { System.out.print(ct[i]+" "); } } System.out.println(); } public static void dfs(int i,int j){ int y= i; int x= j; for(int z=0;z<5;z++) { int ry = i+dy[z]; int rx = j+dx[z]; if(ry<0||rx<0||ry>=sizey||rx>=sizex||visit[ry][rx]==true) { continue; } arr[ry][rx]=count; visit[ry][rx]=true; ct[count]++; dfs(ry,rx); } } }
'코딩테스트(백준)' 카테고리의 다른 글
[백준] 1600 : 말이 되고픈 원숭이 -JAVA(자바) - 사좋배 공유 (0) | 2020.02.24 |
---|---|
[백준] 2589 : 보물섬 -JAVA(자바) - 사좋배 공유 (0) | 2020.02.23 |
[백준] 7562 : 나이트의 이동 -JAVA(자바) - 사좋배 공유 (0) | 2020.02.23 |
[백준] 2606 : 바이러스 -JAVA(자바) - 사좋배 공유 (0) | 2020.02.21 |
[백준] 11399 : ATM -JAVA - 사좋배 공유 (0) | 2020.02.21 |