[ Python 백준 ] 11727 | 2xN 타일링 2

Da-hye·2020년 12월 29일
0

Python

목록 보기
3/4

Try to solve 💭

2xN 타일링 1번 문제를 푼 뒤 다른 사람들의 풀이를 공부했었다. 주어진 타일에 대해서 마지막 타일을 1) 1x2, 2) 2x1, 3) 2x2 의 크기로 고정해서 경우의 수를 구하는 것이었다.
이번 문제는 위 아이디어와 같이 접근하여 풀어보았다.

Solution 💡

만약, n이 3일때 2x3의 타일이 존재한다고 하자.
마지막 타일을
1) 1x2(2개) 크기로 고정했을 때,
앞의 타일에서 구해지는 경우의 수는 2x1의 타일 가짓 수이므로 case[n-2]

2) 2x1 크기로 고정했을 때,
앞의 타일에서 구해지는 경우의 수는 2x2의 타일 가짓 수이므로 case[n-1]

3) 2x2 크기로 고정했을 때,
앞의 타일에서 구해지는 경우의 수는 2x1의 타일 가짓 수이므로 case[n-2]

즉, case[n] = case[n-1] + 2( case[n-2] ) 로 구해진다.

Code Review 🔎

n = int(input())
dp = [0, 1, 3]

for i in range(3, n+1):
  result = dp[i-1] + 2 * (dp[i-2])
  dp.append( result % 10007 )

print(dp[n])
profile
🌱 차근차근, 오래 즐겁게!

0개의 댓글