๐ ๋ฌธ์ ๋งํฌ
๐ ํ์ด ๊ณผ์
- ์ฌ๊ท๋ฅผ ์ด์ฉํ์ฌ DFS ๋ฐฉ์์ผ๋ก ํ์์ต๋๋ค. (BFS๋ฐฉ์์ผ๋ก ํ์ด๋ ๋ฉ๋๋ค.)
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด์ ๊ฐ์ด 1์ด๋ฉด์, ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ ๊ธฐ์ค์ผ๋ก DFS๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ดํ, DFS ์ฌ๊ท๋ด์์ count ๋ณ์๋ฅผ ํตํด ์ฐ๊ฒฐ๋์ด ์๋ Node๋ฅผ ํ์ํ์ฌ count ๋ณ์๋ฅผ ๋ฐํํฉ๋๋ค.
- Main ๋ฉ์๋์์ dfs() ๋ฉ์๋์ ์์์ ์ด ๊ณง count ๋ณ์์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์ด๊ธฐํ๋ฅผ 1๋ก ํฉ๋๋ค.
- ์ด์ฐจํผ, ์ด ๋จ์ง์๋ List์ size()์ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ฒดํฌํ์ง ์์ต๋๋ค.
- ๋ง์ง๋ง์ผ๋ก List์ ๋ด์ ๊ฐ๋ค์ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
๐ป ์ฝ๋
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
static int n,count;
static int[] dx = {-1,0,1,0};
static int[] dy = {0,-1,0,1};
static int[][] arr;
static boolean[][] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuffer sb = new StringBuffer();
List<Integer> answerList = new ArrayList<>();
n = Integer.parseInt(br.readLine());
arr = new int[n][n];
visited = new boolean[n][n];
for(int i = 0; i< n; i++){
String input = br.readLine();
for(int j = 0; j< n; j++){
arr[i][j] = Integer.parseInt(String.valueOf(input.charAt(j)));
}
}
for(int i = 0; i< n; i++){
for(int j = 0; j< n; j++){
if(arr[i][j] == 1 && !visited[i][j]){
count = 1;
answerList.add(dfs(i,j));
}
}
}
Collections.sort(answerList);
sb.append(answerList.size()).append("\n");
for(Integer i : answerList){
sb.append(i).append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
private static int dfs(int x, int y){
visited[x][y] = true;
for(int i = 0; i< 4; i++){
int nextX = x + dx[i];
int nextY = y + dy[i];
if(nextX >= 0 && nextY >= 0 && nextX < n && nextY < n){
if(!visited[nextX][nextY] && arr[nextX][nextY] == 1){
dfs(nextX,nextY);
count += 1;
}
}
}
return count;
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 10971๋ฒ : ์ธํ์ ์ํ 2 (Java) (0) | 2022.04.15 |
---|---|
๋ฐฑ์ค 3184๋ฒ : ์ (Java) (0) | 2022.03.22 |
๋ฐฑ์ค 4963๋ฒ : ์ฌ์ ๊ฐ์ (Java) (0) | 2022.03.22 |
๋ฐฑ์ค 2110๋ฒ : ๊ณต์ ๊ธฐ ์ค์น (Java) (0) | 2022.03.22 |
๋ฐฑ์ค 15686๋ฒ : ์นํจ ๋ฐฐ๋ฌ (Java) (0) | 2022.03.22 |