Tags
- ๊ต์ฌ
- ์๋ฎฌ๋ ์ด์
- LV2
- Java
- ์ ๋ ฌ
- ๊ตฌํ
- Brute Force Algorithm
- SpringBoot
- Python
- ์๋ฃ๊ตฌ์กฐ
- Dynamic Programming
- greedy
- PGM
- dfs
- ๋ฐฑํธ๋ํน
- ๋ฌธ์์ด
- ์ ์๋ก
- ์ํ
- BOJ
- ๊ทธ๋ํ ์ด๋ก
- queue
- CodingTest
- sort
- ๋๋น ์ฐ์ ํ์
- DP
- Study
- stack
- ๊ทธ๋ํ ํ์
- ๊น์ด ์ฐ์ ํ์
- BFS
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2667 : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n X n ์ง๋์์ ๋ถ์ด์๋ ์ง (1)์ ์ฐพ์ ๋จ์ง ๋ณ๋ก ๊ตฌ๋ถํ๋ค.
- ๋จ์ง์ ์์ ๊ฐ ๋จ์ง๋ณ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค.
- BFS๋ก ํ์ํด ๋ถ์ด์๋ ์ง์ ์์ ๋จ์ง ์๋ฅผ ๊ตฌํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.*;
public class Main {
public static void main(String[] args) {
// 1) input
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
String s = sc.next();
for (int j = 0; j < n; j++) {
arr[i][j] = s.charAt(j) - '0';
}
}
// 2) BFS
int dangi = 1;
int[] dx = {-1, 0, 1, 0};
int[] dy = {0, 1, 0, -1};
boolean[][] visit = new boolean[n][n];
Stack<Pair> stack;
ArrayList<Integer> answer = new ArrayList<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
stack = new Stack<>();
stack.push(new Pair(i, j));
int count = 0;
while (!stack.isEmpty()) {
Pair pair = stack.pop();
if (0 <= pair.x && pair.x < n && 0 <= pair.y && pair.y < n && !visit[pair.x][pair.y] && arr[pair.x][pair.y] == 1) {
count++;
visit[pair.x][pair.y] = true;
arr[pair.x][pair.y] = dangi;
for (int k = 0; k < 4; k++) {
stack.push(new Pair(pair.x + dx[k], pair.y + dy[k]));
}
}
}
if (count > 0) {
answer.add(count);
dangi++;
}
}
}
Collections.sort(answer);
// 3) print
System.out.println(dangi - 1);
for (int i = 0; i < dangi - 1; i++) {
System.out.println(answer.get(i));
}
}
private static class Pair {
int x, y;
Pair(int x, int y) {
this.x = x;
this.y = y;
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- 1) ์ง๋์ ํ ๋ณ์ ๊ธธ์ด n๊ณผ nxn ์ง๋ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ intํ 2์ฐจ์ ๋ฐฐ์ด arr์ ์ ์ฅํ๋ค.
- 2) BFS๋ก ๋จ์ง๋ฅผ ํ์ํ๋ค.
- ๋ชจ๋ ์ง์ ์์ ๋ ธ๋๋ก ๋ฃ์ด๋ณธ๋ค.
- ์คํ์ด ๋น ๋๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํด ๊ฐ์ ๋จ์ง ์์์ ์ง๋ค์ ์ฐพ๋๋ค.
- x, y๊ฐ ์ง๋ ๋ด์ ๋ฒ์์ด๋ฉฐ, ๋ฐฉ๋ฌธํ์ง ์์ ์ง์ด๊ณ , ๊ฐ์ด 1์ด๋ฉด ๋ฐฉ๋ฌธํ๊ณ ์ฃผ๋ณ ์ง์ ํ์ํ๋ค.
- count > 0 : ํ ์ง์ด๋ผ๋ ๋ฐฉ๋ฌธํ์ผ๋ฉด ๋จ์ง์ด๋ฏ๋ก, ๋จ์ง ์๋ฅผ ๋๋ฆฌ๊ณ ์ง์ ์๋ฅผ answer์ ์ ์ฅํ๋ค.
- answer๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- 3) ๋จ์ง ์ dangi ์ answer ์ ์์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- BFS๋ก ํ ์ ์๋ ๊ฐ๋จํ ๋ฌธ์ ์๋ค.
- ํ ์คํธ์ผ์ด์ค๋ ์ฌ๋ฟ ๋ง๋ค๊ณ ๊ณต์ ๋ ํด๋ณด์๋ค.
// 1) : 1 25
5
11111
11111
11111
11111
11111
// 2) : 3 4 20 36
10
1111111111
1000000001
1011111101
1010000101
1010110101
1010110101
1010000101
1011111101
1000000001
1111111111
// 3) : 1 96
25
1111111111111111111111111
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1000000000000000000000001
1111111111111111111111111
// 4) : 50 1 1 1...(46)...1
10
1010101010
0101010101
1010101010
0101010101
1010101010
0101010101
1010101010
0101010101
1010101010
0101010101
- ๋ฌธ์ ๋ถ์, ์ฝ๋ฉ ๊ณํ์ ๋ฏธ๋ฆฌ ์จ๋ณด๋ฉฐ ํ์ดํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_11478 : ์๋ก ๋ค๋ฅธ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฐ์ (0) | 2023.01.30 |
---|---|
BOJ_11053 : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2023.01.29 |
BOJ_2644 : ์ด์๊ณ์ฐ (0) | 2023.01.26 |
BOJ_2596 : ๋น๋ฐํธ์ง (0) | 2023.01.25 |
BOJ_9372 : ์๊ทผ์ด์ ์ฌํ (0) | 2023.01.24 |