백준 11726 - 2 x n 타일링 (파이썬)
분류 : 다이나믹 프로그래밍
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])
'Programming > 백준' 카테고리의 다른 글
백준 14889 - 스타트와 링크 (파이썬) (0) | 2025.02.22 |
---|---|
백준 1759 - 암호 만들기 (파이썬) (0) | 2025.02.21 |
백준 2579 - 계단 오르기 (파이썬) (0) | 2025.02.03 |
백준 11725 - 트리의 부모 찾기 (0) | 2025.02.01 |
백준 2606 - 바이러스 (0) | 2025.02.01 |
댓글
이 글 공유하기
다른 글
-
백준 14889 - 스타트와 링크 (파이썬)
백준 14889 - 스타트와 링크 (파이썬)
2025.02.22 -
백준 1759 - 암호 만들기 (파이썬)
백준 1759 - 암호 만들기 (파이썬)
2025.02.21 -
백준 2579 - 계단 오르기 (파이썬)
백준 2579 - 계단 오르기 (파이썬)
2025.02.03 -
백준 11725 - 트리의 부모 찾기
백준 11725 - 트리의 부모 찾기
2025.02.01