Written by
최태열
on
on
[Python][프로그래머스][Level3] 2xn 타일링
[Python][프로그래머스][Level3] 2xn 타일링
코드
def solution(n):
if n<=2:
return 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]
Dynamic Programming으로 풀었다.
1,2개 일 때를 제외하고 생각을 해보면
마지막 타일이 “ | ” 일 때와 “=” 일 때, 두 가지로 나뉜다. |
마지막 타일이 “ | “인 개수 = n-1개 타일로 만든 개수 |
마지막 2개의 타일이 “=” 인 개수 = n-2개 타일로 만든 개수
따라서 dp[n]=dp[n-1]+dp[n-2] 이다.
사실 몇개를 직접 해보면 점화식이 세워진다.
Discussion and feedback