2014년 8월 11일 월요일

2630 색종이 자르기

N*N 크기의 정사각형에 파란색과 하얀색의 두 색이 칠해져 있다.
이를 한 색깔로만 채워지도록 계속 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);
}
소스

댓글 없음:

댓글 쓰기