일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MST
- 알고리즘
- 코딩
- 운영체제
- 디자인 패턴
- PL/SQL
- DP
- 오라클
- Kafka
- 페이징
- aws
- Spring Cloud Feign
- Spring Cloud
- 자바
- MVC
- 자료구조
- Jenkins
- SQL
- feign
- JPA
- golang
- Spring
- 백준
- 쿼리
- retry
- 클라우드
- 데이터베이스
- db
- Spring Boot
- Intellj
- Today
- Total
justgo_developer
[JAVA] 백준 2667 단지번호붙이기 본문
import java.util.*;
public class Main {
static int N;
static int[][] map = new int[25][25];
static boolean[][] visit = new boolean[25][25];
static int[] dx = {0,1,0,-1};
static int[] dy = {1,0,-1,0};
static int cnt = 1;
static int len = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
for(int i=0;i<N;i++){
String str = sc.next();
for(int j=0;j<str.length();j++){
map[i][j] = str.charAt(j)-'0';
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(map[i][j]==1 && visit[i][j]==false){
dfs(i,j);
cnt++;
}
}
}
System.out.println(cnt-1);
int[] sort = new int[cnt];
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(map[i][j]!=0){
sort[map[i][j]]++;
}
}
}
Arrays.sort(sort);
for(int i=1;i<cnt;i++){
System.out.println(sort[i]);
}
}
public static void dfs(int x, int y){
map[x][y]=cnt;
visit[x][y] = true;
for(int i=0;i<4;i++){
int nx = x + dx[i];
int ny = y + dy[i];
if(nx>=0 && ny>=0 && nx<N && ny<N){
if(map[nx][ny]==1 && visit[nx][ny]==false){
dfs(nx,ny);
}
}
}
}
}