코딩테스트
[파이썬] 2 x n 타일링 [CODING TEST #57]
ALTERww
2022. 8. 17. 21:32
320x100
https://school.programmers.co.kr/learn/courses/30/lessons/12900
동적계획법(DP)으로 해결..
가로 블럭을 사용하면 무조건 2 x 2를 채워야 한다. 그래서 가로 기준 i-1번째까지 채웠을 때는 세로 블럭을 추가하는 방법 뿐이고, i-2번째까지 채웠을 때는 가로 블럭 2개를 추가하는 방법 뿐이다. i-2번째에서 세로 블럭을 채우는 건 dp[i-1]과 겹치므로 제외한다.
따라서 dp[i] = dp[i-1] + dp[i-2]가 성립한다.
def solution(n):
dp = [0] * (n+1)
dp[1] = 1
dp[2] = 2
for i in range(3,n+1):
dp[i] = (dp[i-1] + dp[i-2]) % 1000000007
return dp[n]