Algorithm/Python

[파이썬/백준 11726]2×n 타일링

박한결 2021. 4. 15. 22:38

문제

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.

 

접근

그림을 보면 위와 같은 규칙을 찾을 수 있다. 피보나치 수를 구해주면 된다. 예전에 피보나치 수를 구하는 문제에서 정직하게 재귀를 사용했다가 시간초과가 나오고, 배열에 저장해도 시간초과가 나왔던 기억이 있다. 그래서 변수만 사용해서 답을 구했다.

 

코드

n = int(input())
if n < 3:
    print(n%10007)
else:
    a, b = 1, 2
    for _ in range(n-2):
        a, b = b, a+b
    print(b%10007)