문제
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
코드
n = int(input()) # n 입력
dp = [0 for _ in range(1001)] # dp리스트 선언
dp[1] = 1 # n = 1일 때 1가지
dp[2] = 3 # n = 2일 때 3가지
for i in range(3, 1001):
dp[i] = (dp[i - 2] * 2) + dp[i - 1] # 점화식 적용
# n = 1: 1가지
# n = 2: 3가지
# n = 3: 5가지
# n = 4: 11가지
# n = 5: 21가지
# .
# .
# .
# n: (n - 2)번째 * 2 + (n - 1)번째
print(dp[n] % 10007) # 10007로 나눈 나머지 출력
실행 화면
채점 결과
728x90
'문제 풀이 > [BaekJoon]' 카테고리의 다른 글
[BaekJoon] 9019 DSLR (Gold 4) - Python (0) | 2022.12.28 |
---|---|
[BaekJoon] 9375 패션왕 신해빈 (Silver 3) - Python (0) | 2022.12.27 |
[BaekJoon] 7569 토마토 (Gold 5) - Python (0) | 2022.12.27 |
[BaekJoon] 7576 토마토 (Gold 5) - Python (0) | 2022.12.27 |
[BaekJoon] 7662 이중 우선순위 큐 (Gold 4) - Python (1) | 2022.12.26 |