이를 한 색깔로만 채워지도록 계속 4등분 하여, 파란색과 하얀색 각각의 색종이가 몇개 존재하는가를 구하는 문제이다.
딱봐도 4등분하는 재귀 문제로 보인다.
풀이 방법은 아래와 같다.
white = 0;
blue = 0;
split(p,q,size)
{
// p,q 점을 시작으로 size크기의 정사각형이
// 하얀색이나 파란색으로 가득 찼는지 검사.
if(isWhite(p,q,size) == true) { white++; return; }
if(isBlue(p,q,size) == true) { blue++; return; }
// 각 사분면으로 재귀
size /= 2;
split(p,q,size);
split(p+size,q,size);
split(p,q+size,size);
split(p+size,q+size,size);
}
소스
댓글 없음:
댓글 쓰기