알고리즘/백준

[파이썬] BOJ_11726(2*n 타일링)

딱따구르리 2022. 4. 27. 16:49
728x90
반응형

문제

 

https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net


 

해설

 

이 문제는 dp 문제이다.

위 그림을 보면

n = (n-1) + (n-2) 임을 알 수 있다.

결국 dp[1]과 dp[2]의 개수만 미리 넣어놓는다면 그 후 dp[n]의 개수들은 쉽게 구할 수 있다.

 

다만, dp 배열을 초기화할 때 

dp = [0] * (1001)이 아니라

dp = [0] * (n + 1)을 해주면 런타임 에러가 뜨는데 

왜 뜨는지 모르겠다..


코드

 

-파이썬

#백준 11726(2*n 타일링)
import sys

n = int(sys.stdin.readline())
dp = [0] * (1001)
dp[1] = 1
dp[2] = 2
for i in range(3, 1001):
    dp[i] = dp[i-1] + dp[i-2]

print(dp[n]%10007)
728x90
반응형