본문 바로가기
  • 개발 삽질 블로그
프로그래밍/알고리즘

Counting Cells in Blob(Blob 셀 수 세기)

by 갹둥 2022. 10. 12.

재귀를 이용하여 구현하였다.

 

public class Main {
	//이차원 배열로 이미지 표현
	static int arr[][] ={
				{1,0,0,0,0,0,0,1},
				{0,1,1,0,0,1,0,0},
				{1,1,0,0,1,0,1,0},
				{0,0,0,0,0,1,0,0},
				{0,1,0,1,0,1,0,0},
				{0,1,0,1,0,1,0,0},
				{1,0,0,0,1,0,0,1},
				{0,1,1,0,0,1,1,1}};
	
    //상수로 컬러 표현
	public static final int BackgroundColor = 0;
	public static final int ImageColor = 1;
	public static final int AlreadyCounted = 2;
	
	public static void main(String[] args){
		
		System.out.println(countBlob(7,7));
        
	}

    //재귀적으로 구현
    static int countBlob(int x, int y) {
    	
    	if(x<0 || y<0 || x>7 || y>7)
    		return 0;
    	if(arr[x][y]==BackgroundColor || arr[x][y]==AlreadyCounted)
    		return 0;
    	
    	int count = 1;
    	arr[x][y] = AlreadyCounted;
    	for(int i=x-1; i<=x+1; i++)
    		for(int j=y-1; j<=y+1; j++) {
    			if(i==x&&y==j) continue;
    			count+=countBlob(i, j);
    		}
    	
    	return count;
    }
}

'프로그래밍 > 알고리즘' 카테고리의 다른 글

유클리드 호제법  (1) 2024.10.12
비트마스크 알고리즘/ 집합 구현  (0) 2024.01.28
동적계획법/다이나믹 프로그래밍(Dynamic Programming)  (0) 2022.11.09
순열과 조합  (0) 2022.10.12
멱집합(PowerSet)  (0) 2022.10.12