[boj] (s3) 11727 2×n 타일링 2

강신현·2022년 4월 19일
0

✅ DP

문제

링크

1. 문제 접근 및 해결 로직

직사각형의 크기는 2xnn로 정해져 있기 때문에
마지막 (n2)(n-2) -> (n1)(n-1) -> (n)(n) 순서대로 놓는다고 생각하자.

  1. (n2)(n-2) 에 1x2을 놓으면 (n1)(n-1)은 자동으로 결정되고 (n)(n) 도 자동으로 결정된다. -> 2x1
  2. (n2)(n-2) 에 2x1을 놓으면 (n1)(n-1)에 뭘 놓는지에 따라 (n)(n)가 자동으로 결정된다.
  3. (n2)(n-2) 에 2x2을 놓으면 (n1)(n-1)은 자동으로 결정되고 (n)(n) 도 자동으로 결정된다. -> 2x1

정리하면 (n)(n)(n2)(n-2)에 따라 자동으로 결정되는 경우가 2개,
(n1)(n-1)에 따라 자동으로 결정되는 경우가 1개이다.

따라서 점화식은 아래와 같다.

  • 정의
    f(n)f(n) : nn까지 타일로 채우는 방법의 수
  • 구하는 답
    f(n)f(n)
  • 초기값
    f(1)=1f(1)=1
    f(2)=3f(2)=3
  • 점화식
    f(n)=2f(n2)+f(n1)f(n)=2*f(n-2)+f(n-1)

2. 코드

3. 시간 복잡도 분석

경우의 수를 모두 구하므로
O(N)O(N)

4. 문제에서 중요한 부분

DP문제는 점화식을 도출하는 것이 중요하다.
Bottm Up(반복문)으로 풀지 Top Down(재귀)으로 풀지는 선택사항

profile
땅콩의 모험 (server)

0개의 댓글