[백준][python] 11726번: 2×n 타일링
11726번: 2×n 타일링
문제
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
입력 조건
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력 조건
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
첫 번째 시도 .
n = int(input())
d = [0]*(n+2)
d[1] = 1
d[2] = 2
if n==1 or n==2:
print(d[n])
else:
for i in range(3,n+1):
d[i] = d[i-1] + d[i-2]
print(d[n]%10007)
»intput
9
»output
55
success
🌝 Thinking
많은 곳에서 접해볼 수 있었던 다이나믹 프로그래밍 문제였다.
점화식 유도 과정은 n은 n-1에서 가로로 1칸 커진다는 의미이고, 그렇다면 2x1 블럭을 이어붙이는 경우 하나 밖에없다
또, n은 n-2에서 가로로 2칸이 넓어지고 1x2블럭 2개를 이어붙이는 경우 하나 밖에 없다.
따라서, $A_n$ = $A_{n-1}$ + $A_{n-2}$임을 알 수 있다.
💡 깨달은 점.
-
댓글남기기