반응형
문제
https://www.acmicpc.net/problem/2133
3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.
입력
첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다.
출력
첫째 줄에 경우의 수를 출력한다.
코드
import sys
input=sys.stdin.readline
n=int(input())
dp=[0 for _ in range(31)]
dp[2]=3
for i in range(4,n+1,2):
dp[i]=3*dp[i-2]+(sum(dp[:i-2])+1)*2
print(dp[n])
문제 해결
https://kosaf04pyh.tistory.com/236
이 풀이를 보고 점화식을 세워 DP로 풀이하였다. (풀이 참조: https://kosaf04pyh.tistory.com/236)
F[N] = ( F[N - 2] * 3 ) + ( F[N - 4] * 2 ) + ( F[N - 6] * 2) + ( F[N - 8] * 2 ) + ... + ( F[0] * 2 )
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 2164번: 카드2 - [Python/파이썬] (0) | 2023.04.15 |
---|---|
[백준] 2156번: 포도주 시식 - [Python/파이썬] (0) | 2023.04.15 |
[백준] 2110번: 공유기 설치 - [Python/파이썬] (0) | 2023.04.15 |
[백준] 2108번: 통계학 - [Python/파이썬] (0) | 2023.04.15 |
[백준] 2089번: -2진수 - [Python/파이썬] (0) | 2023.04.15 |