Programming/백준
백준 11726 - 2 x n 타일링 (파이썬)
pental
2025. 2. 21. 22:58
분류 : 다이나믹 프로그래밍
https://www.acmicpc.net/problem/11726
풀이
점화식을 새워야 한다. 일단 An : 2 * n 타일을 1 * 2, 2 * 1 타일로 채우는 경우의 수를 생각해야한다.
An = A(n - 1) + A(n - 2) 라는 점화식을 세울 수 있다.
- 즉 이 문제를 생각해 보면, 숫자가 너무 커지기 때문에 일단 10007로 나눈다는 조건을 생각해야한다.
- 먼저 dp 배열에 들어갈 초기 값을 생각한다.
- 1번의 dp는 2 * 1 타일에 들어 갈수 있는 타일은 1개이다.
- 2번의 dp는 2 * 2 타일에 들어 갈 수 있는 타일은 총 2개이다.
- 1 * 2 타일 2개인 방법 1개
- 2 * 1 타일 2개인 방법 1개
- 예시를 생각해보자, 2 * 5 크기의 직사각형을 채운 한 가지 방법의 예를 확인해본다.
- 2 * 1 타일 3개
- 1 * 2 타일 2개
점화식을 세워서 생각해보면 An = A(n - 1) + A(n - 2) 라는 점화식을 세울 수 있다.
코드
# 백준 11726 - 2 x n 타일링
# 분류 : 다이나믹 프로그래밍
N = int(input())
mod = 10007
dp = [0] * 1001
dp[1] = 1
dp[2] = 2
for i in range(3, N + 1) :
dp[i] = dp[i - 1] + dp[i - 2]
dp[i] %= mod
print(dp[N])