티스토리 뷰
https://www.acmicpc.net/problem/11727
11727번: 2×n 타일링 2
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.
www.acmicpc.net
이번에는 2 x n 직사각형을 2 x 1, 1 x 2에 추가로 2 x 2 타일로 채우는 방법의 수를 구하는 것이다.
마찬가지로 d[n]은
d[n] : 2 x n 직사각형을 2 x 1, 1 x 2, 2 x 2 타일로 채우는 방법의 총 가지 수

2 x n 타일링 1번 문제에서 2 x 2 타일만 추가됐다.
그리고 2 x 2 타일을 추가하는 건 그냥 1 x 2타일 두 개를 붙인 것과 같다.
d[n] = d[n - 1] + d[n - 2] + d[n - 2]
arr = [0] * 1001
def dp(a):
if a <= 2: return a # base check
if arr[a] > 0: return arr[a] # memoization
arr[a] = dp(a - 2) + dp(a - 1)
return arr[a]
n = int(input()) # 2 x n
for i in range(n + 1):
arr[i] = dp(i)
print(arr[n] % 10007)
2 x n 타일링 1 문제에서 점화식만 살짝 바꾸면 된다.
'PS' 카테고리의 다른 글
| 9095. 1,2,3 더하기 (0) | 2020.08.05 |
|---|---|
| 1463. 1로 만들기 (0) | 2020.08.05 |
| 11726. 2 x n 타일링 (0) | 2020.08.05 |
| 2331. 반복수열 (0) | 2020.08.04 |
| 10451. 순열 사이클 (0) | 2020.08.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 조합
- Python
- CSS
- back tracking
- binary search
- permutation
- Stack
- 재귀
- Dijkstra
- DP
- C
- 자료구조
- 이분탐색
- graph
- two pointer
- dfs
- db
- priority queue
- recursion
- greedy
- Brute Force
- Spring
- floyd warshall
- Kruskal
- Unity
- Implementation
- C++
- Tree
- MVC
- BFS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
