티스토리 뷰
728x90
https://www.acmicpc.net/problem/11727
- 문제 :
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.
- 풀이 :
그림을 그려가며 규칙을 찾았는데
f(n) = f(n-1) + (f(n-2) * 2)
라는 점화식이 도출되었다.
이를 구현하면 된다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
|
import sys
input = sys.stdin.readline
if __name__ == "__main__":
N = int(input())
dp = [0,1,3]
for i in range(3,N+1):
dp.append(dp[i-1] + dp[i-2] * 2)
print(dp[N]%10007)
|
cs |
320x100
'Algorithm > DP(Dynamic Programming' 카테고리의 다른 글
(Python) - BOJ(9465번) : 스티커 (0) | 2022.03.04 |
---|---|
(Python) - BOJ(17626번) : Four Squares (0) | 2022.02.15 |
(Python) - BOJ(11726번) : 2 x n 타일링 (0) | 2022.02.09 |
(Python) - BOJ(11660번) :구간 합 구하기 5 (0) | 2022.02.09 |
(Python) - BOJ(11053번) : 가장 긴 증가하는 부분 수열 (0) | 2022.02.07 |
댓글
© 2022 WonSeok, All rights reserved