728x90
반응형
문제: https://www.acmicpc.net/problem/11726
사용 알고리즘: DP
2 * n 크기의 직사각형을 1 * 2, 2 * 1 타일로 채우는 방법의 수를 구하는 문제 -> 전형적인 DP 문제
주어진 직사각형을 채우기 위한 방법의 수를 구하기 위해 도미노를 쪼개어 생각해보자.
1 * 2 / 2 * 1 의 두 가지 타일로 주어진 직사각형의 가장 오른쪽 부분을 채우는 방법을 생각해보면 아래와 같이 2가지 방법이 있다.
-> dp[n] = dp[n-1] + dp[n-2]

# 입력
n = int(input())
# dp 초기화, 인덱스 1 부터 사용할 것이기 때문에 1001 칸을 만들어줌
dp = [0] * 1001
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[i-1] + dp[i-2]
print(dp[n] % 10007)
728x90
반응형
'백준' 카테고리의 다른 글
[백준/Python] 11055 가장 큰 증가하는 부분 수열 (0) | 2024.07.03 |
---|---|
[백준/Python] 11722 가장 긴 감소하는 부분 수열 (0) | 2024.07.02 |
[백준/Python] 1912 연속합 (0) | 2024.06.23 |
[백준/python] 15665 - N과 M (11) (0) | 2024.06.04 |
[백준/python] 9205 - 맥주 마시면서 걸어가기 (0) | 2024.05.20 |