IT&컴퓨터공학/자료구조&알고리즘

[9] 순환함수 ( 재귀함수 ) - JAVA 를 이용한 이미지 블럭의 사이즈 구하기

yan_z 2020. 6. 22. 18:26

public class counting {
	
	static int alreadyCount =2; // alreadyCount : 이미 count 한 이미지 픽셀
	static int size =8; // image 의 크기는 size X size
	static int cnt =0; // 카운트 수 ( 정답 )
	public static void main(String[] args) {
		int[][] image = { // 0 은 빈칸, 1은 pixel 
				{1,0,0,0,0,0,1,0},
				{0,1,1,0,0,0,0,0},
				{1,1,0,0,0,1,0,0},
				{0,0,0,0,1,0,1,0},
				{0,0,0,0,0,1,0,0},
				{0,1,0,0,0,1,0,1},
				{0,1,0,0,0,1,0,1},
				{1,1,1,0,1,0,1,1},
		};
		
		System.out.println(findsize(image,7,7));
		
	}
	
	public static int findsize(int[][] image,int x,int y) {
		if(x<0 || y<0|| x>=size || y>=size) return cnt;
		else if(image[x][y]==0) return cnt; // 빈칸이라면 그냥 size =0
		else if(image[x][y]==1) {
			cnt++;
			image[x][y]=alreadyCount; // 카운트했으므로 alreadyCount로 바꾼다.
			
			for(int i=x-1;i<=x+1;i++)//-1 부터 1까지
			{ 
				for(int j=y-1;j<=y+1;j++) //5부터 7까지
				{
					cnt = findsize(image, i, j);
				}
			}
		}
		return cnt;
	}

}