[Python 백준] 11726 | 2xN 타일링
Try to solve 💭
n이 1,2,3,4 일때 까지 타일을 그려보며 가짓수를 생각해보았을 때, 순서대로 1,2,3,5 의 경우의 수가 나온다. 고정된 세로의 길이의 타일에서 가로만 늘어나는 구조이기 때문에 DP 문제일 거라 생각했다. 2x3의 타일에서는 '2x2+2x1' 의 크기로 운좋게 '2+1 = 3'가지의 값이 맞아 떨어졌지만, 4에서는 예외가 발생했다.. 겹치는 부분이 존재하기 때문에 바로 접근법을 달리했다.
n = 4일때, 타일 구조는 '2x2+2x2', '2x3+2x1' 이 가능
n = 5일때, 타일 구조는 '2x4+2x1', '2x3+2x2' 이 가능 ..
( '2x2+2x2+2x1'과 같은 구조는 더 큰 크기의 타일 구조에서 중복 추가 되므로 제외하였다. )
-> 중복되는 부분을 고정시킨 채 경우의 수를 구하면 된다.
Solution 💡
마지막 타일이
1) 2x1의 구조를 가질 때,
앞쪽에서 구할 수 있는 경우의 수는 2x(n-1)의 타일 가짓수 값이다.
2) 2x2의 구조를 가질 때,
앞쪽에서 구할 수 있는 경우의 수는 2x(n-2)의 타일 가짓수 값이다.
즉, 연산 식은 case[n] = case[n-1] + case[n-2]
과 같이 나타낼 수 있다.
Code Review 🔎
n = int(input())
case = [ 0, 1, 2 ]
mod = 10007
for i in range(3, n+1):
result = case[i-1] + case[i-2]
case.append(result % mod)
print(case[n])
Author And Source
이 문제에 관하여([Python 백준] 11726 | 2xN 타일링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@da__hey/Python-백준-11726-2xN-타일링저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)