Algorithm/DP

[백준 11726번] 2xn 타일링

킹우현 2023. 3. 14. 12:23

# 1
# 2
# 3 (2 + 1)
# 5 (3 + 2)
# 8 (5 + 3)
# 13 (8 + 5)

n = int(input())

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

이번 문제는 2xn 형태의 직사각형이 주어졌을 때, 2x1과 1x2 타일로 채울 수 있는 경우의 수를 구하는 문제이다.

 

n=1, n=2, n=3 .. 인 경우의 수를 차례대로 구하다보니 dp[n] = dp[n-1] + dp[n-2] 라는 점화식을 도출해낼 수 있어서 쉽게 해결할 수 있었던 문제였다 :)

 

 

'Algorithm > DP' 카테고리의 다른 글

[백준 1010번] 다리놓기  (0) 2023.03.15
[백준 1912번] 연속합  (0) 2023.03.14
[백준 1003번] 피보나치 함수  (0) 2023.03.13
[백준 2775번] 부녀회장이 될테야  (0) 2023.03.13
[백준 9095번] 1, 2, 3 더하기  (0) 2023.03.10