반응형
https://www.acmicpc.net/problem/11727
문제
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
풀이
DP로 풀이해야하는 코드
2022.07.26 - [study/백준] - [백준] 11726. 2xn타일링 : python
와 같은 문제지만 2x2 종이가 추가되었다는게 다른점
2x2종이 한장이 1x2로 만들 수 있는 방법이 2가지라는 점을 명시하고 규칙을 찾아나갔다
2 = 3가지
3 = 5가지
4 = 11가지
5 = 21가지
.
.
.
숫자가 1 늘어날 때 가짓수가 확확 늘어나서 규칙을 찾기 어려웠다
규칙은 전의 수 + 전전의 수 * 2!
python 코드
# 11727 2xn 타일링 2
n = int(input())
arr = [0, 1, 3]
for i in range(3,n+1):
arr.append((arr[i - 2] * 2) + arr[i - 1])
print(arr[n] % 10007)
python recursive 코드
def recursive(x):
if x == 1:
return 1
if x == 2:
return 3
if arr[x] == 0:
arr[x] = (recursive(x -2) * 2) + recursive(x-1)
return arr[x]
n = int(input())
arr = [0] * (n+1)
print(recursive(n) % 10007)
반응형
'study > 백준' 카테고리의 다른 글
[백준] 11651. 좌표 정렬하기 2 : python (0) | 2022.07.31 |
---|---|
[백준] 11659. 구간 합 구하기 4 : python (0) | 2022.07.30 |
[백준] 2630. 색종이 만들기 : python (0) | 2022.07.27 |
[백준] 11726. 2xn타일링 : python (0) | 2022.07.26 |
[백준] 9461. 파도반 수열 : python (0) | 2022.07.24 |