문제
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
코드설명

n=1 일때 1
n=2 일때 2 ...
위 그림처럼 그려본 결과 규칙을 발견할 수 있었고,
dp[i] = (dp[i-1]+dp[i-2]) 이 점화식으로 표현이 가능하게 된다. 10,007로 나눈 나머지를 출력해야한다는 조건이 있어 추가하면 된다.
코드
import sys
input = sys.stdin.readline
n = int(input())
dp = [0]*1001
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])'Coding Study > BOJ' 카테고리의 다른 글
| [백준]🥈10815번 파이썬 _ 숫자카드 (0) | 2025.12.08 |
|---|---|
| [백준]🥈14501번 파이썬 _ 퇴사 (0) | 2025.11.21 |
| [백준]🥈2941번 파이썬 _ 크로아티아 알파벳 (0) | 2025.10.17 |
| [백준]🥉1333번 파이썬 _ 부재중 전화 (0) | 2025.04.18 |
| [백준]🥈1064 : 평행사변형 (0) | 2025.04.17 |