공부-코딩테스트/코테풀이 - 자바, 파이썬
유기농 배추 (자바, 코딩테스트, 백준)
령과
2022. 8. 9. 18:50
https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
나의 풀이 : 재귀로 해결
테이블을 사용해서 배추의 위치를 찍는다.
그 다음 테이블을 탐색하며 배추를 찾는다면 처음 한번만 카운트를 한 다음 인접한 배추들을 모두 제거하는
remove메소드를 수행한다. 인접한 배추를 모두 뽑고 처음 한번만 카운트 한다면 문제에서 필요로 하는 답을 얻을 수 있다.
나의코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static boolean[][] table;
static int count;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
count = 0;
String[] tmp = br.readLine().split(" ");
int M = Integer.parseInt(tmp[0]), N = Integer.parseInt(tmp[1]), K = Integer.parseInt(tmp[2]);
table = new boolean[M + 2][N + 2];
for (int i = 0; i < K; i++) {
String[] x_y = br.readLine().split(" ");
table[Integer.parseInt(x_y[0]) + 1][Integer.parseInt(x_y[1]) + 1]= true;
}
for(int i = 1 ; i<table.length-1;i++) {
for(int j = 1; j<table[0].length-1;j++) {
if(table[i][j]) {
count++;
remove(i,j);
}
}
}
sb.append(count+"\n");
}
System.out.println(sb);
}
public static void remove(int x, int y) {
table[x][y] = false;
int[] ch_x = {-1,0,0,1};
int[] ch_y = {0,-1,1,0};
for(int i = 0; i<4;i++) {
if(table[x+ch_x[i]][y+ch_y[i]]) {
remove(x+ch_x[i],y+ch_y[i]);
}
}
}
}
GitHub - lyeong-gwa/algorithm_study: 알고리즘 공부!
알고리즘 공부! Contribute to lyeong-gwa/algorithm_study development by creating an account on GitHub.
github.com