티스토리 뷰



2×n 직사각형을 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.

아래 그림은 2×17 직사각형을 채운 한가지 예이다.


풀이방법

방법은 11726과 거의 동일하다.

먼저, d[n]을 어떻게 나눌 수 있을지 생각해봐야한다.


d[n]은 아래 3가지 경우로 나눌 수 있다.

1. 2x1 블록으로 끝나는 경우

2. 1x2 블록 2개로 끝나는 경우

3. 2x2 블록 1개로 끝나는 경우



위의 3가지 경우를 다르게 표현하면 아래와 같다.

1. d[n-1] 끝에 2x1 블록이 추가되는 경우

2. d[n-2] 끝에1x2 블록 2개가 추가되는 경우

2. d[n-2] 끝에2x2 블록이 추가되는 경우


d[n] = d[n-1] + d[n-2] + d[n-2]
즉, 식은 d[n] = d[n-1] + d[n-2] * 2가 된다.



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

11726 : 2×n 타일링  (0) 2017.02.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함