π·πΌλͺ¨μ¬λ΄μ κ°λ°μμ²π·πΌ
[JAVA/μ½λ©ν μ€νΈ] μ¬λλΌ μμΌλλ λ³Έλ¬Έ
κ°λ°/μκ³ λ¦¬μ¦ λ¬Έμ νμ΄ JAVA
[JAVA/μ½λ©ν μ€νΈ] μ¬λλΌ μμΌλλ
μμΌμ΄ 2022. 3. 22. 00:12λ°μν
μ€λͺ
N*Nμ μ¬λλΌ μμΌλλμ μ§λκ° κ²©μνμ μ λ³΄λ‘ μ£Όμ΄μ§λλ€.
κ° μ¬μ 1λ‘ νμλμ΄ μνμ’μ°μ λκ°μ μΌλ‘ μ°κ²°λμ΄ μμΌλ©°, 0μ λ°λ€μ λλ€.
μ¬λλΌ μμΌλλμ λͺ κ°μ μ¬μ΄ μλμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νμΈμ.
λ§μ½ μμ κ°λ€λ©΄ μ¬μ κ°μλ 5κ°μ λλ€.
μ λ ₯
첫 λ²μ§Έ μ€μ μμ°μ N(3<=N<=20)μ΄ μ£Όμ΄μ§λλ€.
λ λ²μ§Έ μ€λΆν° 격μν μ λ³΄κ° μ£Όμ΄μ§λ€.
μΆλ ₯
첫 λ²μ§Έ μ€μ μ¬μ κ°μλ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯ 1
7
1 1 0 0 0 1 0
0 1 1 0 1 1 0
0 1 0 0 0 0 0
0 0 0 1 0 1 1
1 1 0 1 1 0 0
1 0 0 0 1 0 0
1 0 1 0 1 0 0
μμ μΆλ ₯ 1
5
import java.util.*;
class Point{
int x, y;
public Point(int tmpX, int tmpY) {
this.x = tmpX;
this.y = tmpY;
}
}
public class Main {
static int n;
static int[] disX = {0, 1, 0, -1, -1, 1, -1, 1};
static int[] disY = {1, 0, -1, 0, -1, -1, 1, 1};
static int[][] array;
static int[][] dis;
static Queue<Point> qu = new LinkedList<>();
static int answer = 0;
public void DFS(int x, int y){
if(dis[x][y] == 1){
return;
}else{
dis[x][y] = 1;
for (int i = 0; i < 8; i++) {
int tmpX = x + disX[i];
int tmpY = y + disY[i];
if(tmpX >= 0 && tmpY >= 0 && tmpX < n && tmpY < n && array[tmpX][tmpY] == 1){
DFS(tmpX, tmpY);
}
}
}
}
public static void main(String[] args) {
Main main = new Main();
Scanner in = new Scanner(System.in);
n = in.nextInt();
array = new int[n][n];
dis = new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
array[i][j] = in.nextInt();
if(array[i][j] == 1){
qu.offer(new Point(i, j));
}
}
}
while(!qu.isEmpty()){
Point tmp = qu.poll();
if(dis[tmp.x][tmp.y] != 1){
main.DFS(tmp.x,tmp.y);
answer++;
}
}
System.out.println(answer);
}
}
'κ°λ° > μκ³ λ¦¬μ¦ λ¬Έμ νμ΄ JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA/μ½λ©ν μ€νΈ] κ³λ¨μ€λ₯΄κΈ° (0) | 2022.07.05 |
---|---|
[JAVA/μ½λ©ν μ€νΈ] νΌμ λ°°λ¬ κ±°λ¦¬(μΌμ± SWμλνκ° κΈ°μΆλ¬Έμ : DFSνμ©) (0) | 2022.03.22 |
[JAVA/μ½λ©ν μ€νΈ] ν λ§ν (BFS νμ©) (0) | 2022.03.18 |
[JAVA/μ½λ©ν μ€νΈ] λ―Έλ‘μ μ΅λ¨κ±°λ¦¬ ν΅λ‘(BFS) (0) | 2022.03.18 |
[JAVA/μ½λ©ν μ€νΈ] λ―Έλ‘νμ(DFS) (0) | 2022.03.18 |
Comments