본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

유기농 배추 (자바, 코딩테스트, 백준)

by 령과 2022. 8. 9.

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]);
			}
		}
	}
}

 

 

https://github.com/lyeong-gwa/algorithm_study/blob/main/%EB%B0%B1%EC%A4%80/Silver/1012.%E2%80%85%EC%9C%A0%EA%B8%B0%EB%86%8D%E2%80%85%EB%B0%B0%EC%B6%94/%EC%9C%A0%EA%B8%B0%EB%86%8D%E2%80%85%EB%B0%B0%EC%B6%94.java

 

GitHub - lyeong-gwa/algorithm_study: 알고리즘 공부!

알고리즘 공부! Contribute to lyeong-gwa/algorithm_study development by creating an account on GitHub.

github.com

 

댓글