링크 : https://www.acmicpc.net/problem/2583
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static int n,m,k;
static char map[][];
static boolean visit[][];
static int dr[] = {-1,1,0,0};
static int dc[]= {0,0,-1,1};
static int count =1;
static int result =0;
public static void main(String[] args) throws NumberFormatException, IOException {
Scanner sc = new Scanner(System.in);
m=sc.nextInt(); //행
n=sc.nextInt(); //열
visit=new boolean[m+1][n+1];
k= sc.nextInt();
for(int i=0;i<k;i++) {
int x1=sc.nextInt();
int y1=sc.nextInt();//왼쪽아래
int x2=sc.nextInt();
int y2=sc.nextInt();//오른쪽위
//왼쪽위 = (x1,y2)
//오른쪽아래 = (x2,y1)
for(int j=m-y2;j<=m-y1;j++) { //행
for(int k=x1;k<=x2;k++) { //열
visit[j][k]=true;
}
}
}
StringBuilder sb = new StringBuilder();
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
if(visit[i][j]==false) {
result++;
dfs(i,j);
sb.append(count+" ");
count=1;
}
}
}
System.out.println(result);
System.out.println(sb.toString());
}
static void dfs(int row,int col) {
visit[row][col]=true;
for(int i=0;i<4;i++) {
int nr=row+dr[i];
int nc=col+dc[i];
if(nr>=0&&nc>=0&&nr<m&&nc<n) {
if(visit[nr][nc]==false) {
count++;
dfs(nr,nc);
}
}
}
}
}
열불나노 암만봐도 맞는거같은데
댓글 0