def tiling(n):
if n%2==1:return False
else:
dp=[[0]*3 for i in range(10000)]
dp[2][0]=dp[2][1]=dp[2][2]=1
for i in range(4,n+1,2):
dp[i][0] = 2 * dp[i-2][0] + dp[i-2][1] + dp[i-2][2]
dp[i][1] = dp[i-2][0] + 2 * dp[i-2][1] + dp[i-2][2]
dp[i][2] = dp[i-2][0] + dp[i-2][1] + dp[i-2][2]
return (dp[i][0] + dp[i][1] + dp[i][2])%100000
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(tiling(119))
'알고리즘 문제' 카테고리의 다른 글
Programmers Level 8 올바른 괄호 (카탈린 수 사용) (0) | 2018.01.28 |
---|---|
Programmers Level 8 선입선출 스케줄링 (1) | 2018.01.28 |
Programmers Level 5 줄 서는 방법 (0) | 2018.01.28 |
Programmers Level 5 2 x n 타일링 (0) | 2018.01.28 |
Programmers Level 5 124나라의 숫자 (0) | 2018.01.28 |