[백준/파이썬] 11726 2xn 타일링

#문제링크

https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net

#나의풀이

import sys

if __name__ == '__main__':
    n = int(sys.stdin.readline())
    dp = [0] * 1001
    dp[1] = 1
    dp[2] = 2

    for i in range(3, n+1):
        dp[i] = dp[i-2] + dp[i-1]
    print(dp[n] % 10007)

#해설

전형적인 DP문제 이쯤되면 solved에서 실버3은 dp로 되어있는 문제만 있는게 아닐까 라는 생각이든다.

2x1부터 2x2 ... 2xn 까지 점점 커지는데 안에 있는 경우의수는 i = (i-1) + (i-2)가 된다. 즉 1과 2는 직접 초기화 시켜주고 3부터 반복문을 돌며 값을 완성시켜준다.