01-10 04:27
Recent Posts
Recent Comments
Tags
- Spring
- TSQL
- DATABASE
- JOBํ๊ณ
- ICT
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- python
- ์คํฝ์ค๋น
- ์คํฝ๋ ํ
- ์๋์ด๋ ธ
- appetizer
- ํ์ด์ฌ
- ์กํ๊ณ
- Naver Cloud
- ์๋ฐ
- linux
- ict๊ณต๋ชจ์
- API๋ง์ผํ๋ ์ด์ค
- DB
- SQL
- ํ์ด์๊ณต๋ชจ์
- ICT๋ฉํ ๋ง
- RaspberryPi
- ์จ์ผ๋ํ
- mysql
- ์ด๋ธ์
- ํ์ด์
- Java
- ํ๋ก๋ณด๋ ธ
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 2667 :: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ ๋ณธ๋ฌธ
Algorithm/Baekjoon
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 2667 :: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
miinsun 2022. 4. 2. 23:15
๐ฌ ๋ฌธ์ ์ค๋ช
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค.
์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค.
์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋์๋ค๋ ๊ฒ์ ์ด๋ค ์ง์ด ์ข์ฐ, ํน์ ์๋์๋ก ๋ค๋ฅธ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
๋๊ฐ์ ์์ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ค.
<๊ทธ๋ฆผ 2>๋ <๊ทธ๋ฆผ 1>์ ๋จ์ง๋ณ๋ก ๋ฒํธ๋ฅผ ๋ถ์ธ ๊ฒ์ด๋ค.
์ง๋๋ฅผ ์ ๋ ฅํ์ฌ ๋จ์ง์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ฐ ๋จ์ง์ ์ํ๋ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ ๋ฒ์งธ ์ค์๋ ์ง๋์ ํฌ๊ธฐ N(์ ์ฌ๊ฐํ์ด๋ฏ๋ก ๊ฐ๋ก์ ์ธ๋ก์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฉฐ 5≤N≤25)์ด ์ ๋ ฅ๋๊ณ ,
- ๊ทธ ๋ค์ N์ค์๋ ๊ฐ๊ฐ N๊ฐ์ ์๋ฃ(0ํน์ 1)๊ฐ ์ ๋ ฅ๋๋ค.
์ถ๋ ฅ
- ์ฒซ ๋ฒ์งธ ์ค์๋ ์ด ๋จ์ง์๋ฅผ ์ถ๋ ฅํ์์ค.
- ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋จ์ง๋ด ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ์์ค.
์์ ์ ๋ ฅ 1)
7
0110100
0110101
1110101
0000111
0100000
0111110
0111000
์์ ์ถ๋ ฅ 1)
3
7
8
9
โ
๐ป Main.java
- DFS๋ฅผ ํ์ฉํ๋ค
- ๋จ์ง์ ์๋ check์ ์ ์ฅ๋๋๋ฐ, checkํฌ๊ธฐ๋ n*n์์ ๋ค์ด๊ฐ๋ค๋ ๊ฒ์ ์ ์ํ์
- ๋ฌธ์ ํ์ดํ ๋, ๋ฌธ์ ๋ฅผ ์๋ชป์ดํดํด์ ํธ๋๋ฐ ๋ง์ ์๊ฐ์ด ์์๋๋ ๋ฌธ์ ์ด๋ค.
- ๊ผญ ๋จ์ง๋ด ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์
/* ๋ฐฑ์ค ๊ทธ๋ํ - 2667 :: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ */
import java.io.*;
import java.util.*;
public class Main {
static int [][] board;
static int[] check;
static int n;
// ์ ๋ค ์์ ์ขํ ์ ๋ณด
static int[] dx = {1, 0, -1, 0};
static int[] dy = {0, 1, 0, -1};
static void DFS(int x, int y, int order) {
check[order]++;
board[x][y] = 0;
for(int i = 0; i < 4; i++) {
// ๋ค์์ ์ฌ ์ขํ
int nx = x + dx[i];
int ny = y + dy[i];
// ์งํ ๊ฒฝ๊ณ ๊ฐ ๊ฒ์ฌ and ๋จ์ง ํ์ธ
if(nx >= 0 && ny >= 0 && nx < n && ny < n && board[nx][ny] == 1) {
DFS(nx, ny, order);
}
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// ์ง๋ ์ ๋ณด ์
๋ ฅ
n = Integer.parseInt(br.readLine());
board = new int [n][n];
check = new int [n * n];
for(int i = 0; i < n; i++) {
char[] c = br.readLine().toCharArray();
for(int j = 0; j < n; j++) {
board[i][j] = c[j] - '0';
}
}
// DFS๋ฅผ ์ด์ฉํด ๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ
int order = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(board[i][j] == 1) {
order++;
DFS(i, j, order);
}
}
}
// ์ถ๋ ฅ
sb.append(order).append('\n');
// ๋จ์ง ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
int[] tmp = new int[order];
for(int i = 1; i <= order; i++) {
tmp[i - 1] = check[i];
}
Arrays.sort(tmp);
for(int i: tmp) {
sb.append(i).append('\n');
}
System.out.println(sb);
br.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 7576 :: ํ ๋งํ (0) | 2022.04.02 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 4963 :: ์ฌ์ ๊ฐ์ (0) | 2022.04.02 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 2331 :: ๋ฐ๋ณต์์ด (0) | 2022.03.31 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ10451 :: ์์ด ์ฌ์ดํด (0) | 2022.03.30 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 11724 :: ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2022.03.29 |
Comments