[ BOJ 2667 ] 2×n 타일링 2(Python)
문제
https://www.acmicpc.net/problem/11727
🤔 약간 아직도 의문에 차있는 상태다.
👉🏻 https://www.acmicpc.net/board/view/46706
문제 풀이
dp[i]
= 2 x i 크기의 직사각형을 채우는 방법 가짓수
🚨 새로운 가짓수를 셀 때는 같은 경우의 수가 겹치면 안된다.
말로 설명하기 좀 어려워서 도식화해봤다.
dp[i]
=
dp[i-1]일 때 (2x1 1개)
+
dp[i-2]일 때 (2x2 1개/ 1x2 2개)
(겹치는 부분은 제외하기)
위의 그림을 보고 점화식을 표현하면 아래와 같이 나타낼 수있다.
dp[i] = (dp[i-1] + dp[i-2] * 2)
코드
import sys
input = sys.stdin.readline
n = int(input())
dp = [0] * 1001
dp[1] = 1
dp[2] = 3
if n < 3:
print(dp[n])
else:
for i in range(3, n+1):
dp[i] = (dp[i-1] + (dp[i-2] * 2) % 10007) % 10007
print(dp[n])
Author And Source
이 문제에 관하여([ BOJ 2667 ] 2×n 타일링 2(Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@uoayop/BOJ-2667-2n-타일링-2Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)