반응형
풀이
2 x n 의 공간이 주어질 때 2 x 1 의 타일을 놓는 경우의 수를 구해야 하는 동적 계획법 문제이다.
n이 1 증가할 때 타일을 놓는 방법은 다음과 같다.
- dp[n]일 때의 경우에 세로로 타일을 놓는다
- dp[n-1]의 경우에 가로로 2칸짜리 타일을 놓는다
따라서 점화식은 dp[n] = dp[-1] + dp[-2] 이다.
def solution(n):
dp = [0, 1, 2]
for i in range(n - len(dp) + 1):
dp.append((dp[-1] + dp[-2]) % 1000000007)
return dp[n]
반응형
'알고리즘 연습 > 동적 계획법' 카테고리의 다른 글
[🥈5 / 백준 16395 / 파이썬] 파스칼의 삼각형 (0) | 2022.11.30 |
---|---|
[🥉1 / 백준 24416 / 파이썬] 알고리즘 수업 - 피보나치 수 1 (0) | 2022.06.02 |
[🥇5 / 백준 13398 / 파이썬] 연속합 2 (0) | 2022.04.24 |
[🥈4 / 백준 10826 / 파이썬] 피보나치 수 4 (0) | 2022.04.04 |
[🥉1 / 백준 13301 / 파이썬] 타일 장식물 (0) | 2022.02.19 |