한 걸음 두 걸음
백준 1012 ] 유기농배추 DFS (JAVA) 본문
반응형
import java.util.*;
import java.lang.*;
public class Main {
static boolean[][] board = new boolean [50][50];
static int[][] dir = {{-1, 0},{0, -1},{0, 1},{1, 0}};
static int row,col;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cnt; //입력받을 배추갯수
int result = 0; //결과값
int testCase = sc.nextInt();
//테스트케이스만큼
for(int test = 0; test < testCase; test++) {
row = sc.nextInt(); //가로 크기
col = sc.nextInt(); //세로 크기
cnt = sc.nextInt(); //배추갯수
//board세팅
for(int count = 0; count < cnt; count++) {
int locI = sc.nextInt();
int locJ = sc.nextInt();
board[locI][locJ] = true;
}
//row, col 검사하기
for(int i = 0 ; i < row; i ++) {
for( int j = 0 ; j < col; j ++) {
if(board[i][j]) {
dfs(i,j); //하고나면 연결된 board의 배추들이 모두 false가 됩니다.
result++;
}
}
}
//testCase가 한 번씩 끝날 때마다 결과값 출력 후
System.out.println(result);
//다음 케이스를 위해 초기화
result = 0;
}
}
//관련된 아이들을 모두 0으로 바꿔주기위한 검사함수
static void dfs(int i, int j) {
board[i][j] = false;
for(int d = 0; d < 4; d++) {
int ti = i + dir[d][0];
int tj = j + dir[d][1];
if(isVal(ti, tj))
dfs(ti, tj);
}
}
//유효한값인지 검사하는 함수
static boolean isVal(int ti, int tj) {
if(ti >=0 && tj >=0 && ti < row && tj < col && board[ti][tj])
return true;
return false;
}
}
반응형
'CSE > baekjoon & swexpert' 카테고리의 다른 글
백준 JAVA / 1541 잃어버린 괄호 ] tokenizer 활용 / 그리디 (0) | 2019.05.30 |
---|---|
백준 10845 큐 / JAVA (0) | 2019.05.29 |
백준 1697 숨바꼭질 java (0) | 2019.05.27 |
보류 > 메모리초과 (0) | 2019.04.27 |
백준 10872 팩토리얼 / java (0) | 2019.04.27 |