11726번: 2 x n 타일링
문제 )
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
![](https://blog.kakaocdn.net/dn/vTNZV/btrymis6Eq0/sAfUcd1hwpEUYtEKPmk1sk/img.png)
입력 :
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력 :
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
풀이)
1) 탑다운 방식
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
|
import sys
sys.setrecursionlimit(1 << 30)
def recur(cur):
ret = 0
if cur > n:
return 0
if dp[cur] != -1:
return dp[cur]
if cur == n:
return 1
for i in range(1, 3):
ret += recur(cur + i)
dp[cur] = ret
return dp[cur]
n = int(input())
dp = [-1] * (n + 1)
print(recur(0) % 10007)
|
cs |
2) 바텀업 방식 // 정답
1
2
3
4
5
6
7
|
n = int(input())
dp = [-1] * (1010)
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = (dp[i - 1] + dp[i - 2]) % 10007
print(dp[n])
|
cs |
출처 : https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
'Develop > 백준 (python)' 카테고리의 다른 글
[백준] 9657번: 돌 게임 3 (python) (0) | 2022.04.04 |
---|---|
[백준] 11727번: 2 x n 타일링 2 (python) (0) | 2022.04.04 |
[백준] 1699번: 제곱수의 합 (python) (0) | 2022.04.03 |
[백준] 15988번: 1, 2, 3 더하기 3 (python) (0) | 2022.04.03 |
[백준] 9095번: 1, 2, 3 더하기(python) (0) | 2022.04.03 |