728x90
반응형
1. 문제
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
2. 풀이
- DFS를 사용하여 풀이하였다.
- 배추가 심어져 있는 땅을 1로 표기하여, 2중 for문에서 1을 만났을 때 visited를 true로 해주었다.
- 방문하지 않은 배추자리에 갔을 때마다 카운트하여 배추가 모여있는 땅의 갯수를 구하였다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
static int N,M;
static int[][] map;
static boolean[][] visited;
static int[][]dir ={{-1,0},{0,1},{1,0},{0,-1}};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//br = new BufferedReader(new StringReader(src));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
while(num-->0) {
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
map = new int[N][M];
visited = new boolean[N][M];
int count = Integer.parseInt(st.nextToken());
for(int i =0; i<count; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
map[a][b]=1;
}
int cnt=0;
for(int i =0; i<N; i++) {
for(int j =0; j<M;j++) {
if(!visited[i][j] && map[i][j]==1) {
visited[i][j]= true;
cnt++;
dfs(i,j);
}
}
}
System.out.println(cnt);
}
}
static void dfs(int r, int c) {
for(int d=0; d<4; d++) {
int newR = r +dir[d][0];
int newC = c +dir[d][1];
if(isRange(newR, newC) && map[newR][newC]==1 && !visited[newR][newC]) {
visited[newR][newC] = true;
dfs(newR, newC);
}
}
}
static boolean isRange(int r, int c) {
return r>=0 && c>=0 && r<N && c<M;
}
static String src =
"2\r\n" +
"10 8 17\r\n" +
"0 0\r\n" +
"1 0\r\n" +
"1 1\r\n" +
"4 2\r\n" +
"4 3\r\n" +
"4 5\r\n" +
"2 4\r\n" +
"3 4\r\n" +
"7 4\r\n" +
"8 4\r\n" +
"9 4\r\n" +
"7 5\r\n" +
"8 5\r\n" +
"9 5\r\n" +
"7 6\r\n" +
"8 6\r\n" +
"9 6\r\n" +
"10 10 1\r\n" +
"5 5";
}
반응형
반응형
'알고리즘 > 그래프' 카테고리의 다른 글
| [백준 16929] Two Dots(Java) (0) | 2020.12.22 |
|---|---|
| [백준 13023] ABCDE(Java) (0) | 2020.12.22 |
| [백준 11724] 연결 요소의 개수(Java) (0) | 2020.12.22 |
| [백준 5567] 결혼식(Java) (0) | 2020.12.22 |
| [백준 2644] 촌수계산(Java) (0) | 2020.12.22 |