[Baekjoon] 11727. 2xn 타일링 2
문제 설명
문제
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
예제 입력 1
2
예제 출력 1
3
예제 입력 2
8
예제 출력 2
171
예제 입력 3
12
예제 출력 3
2731
출처
- 문제를 만든 사람: baekjoon
알고리즘 분류
문제 풀이
# DynamicProgramming
DynamicProgramming
을 이용하는 문제입니다.
풀이 과정
Programmers에서 2xn 타일링 문제를 풀었었는데, 그 문제의 다른 버전입니다.
더 어려울 것은 없고, 2xn 타일링
문제에서 점화식을 구하는 과정을 이해했다면 이 문제도 쉽게 풀었을 것입니다.
전체 코드
n = int(input())
dp = [0 for _ in range(n+1)]
dp[1] = 1
if n >= 2: dp[2] = 3
for i in range(3,n+1):
dp[i] = (dp[i-1] + 2*dp[i-2])%10007
print(dp[n])
Leave a comment