Python3/백준 알고리즘

2022.03.07 [백준] (python 파이썬) 2Xn 타일링 2

ian's coding 2022. 3. 7. 21:15
728x90
반응형

 

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 


풀이

이 문제는 n이 늘어날 때마다 수가 어떤 규칙을 가지고 늘어나는지를 찾아야 한다.

그래서 1~8까지 구하면 다음과 같다.

1 1
2 3
3 5
4 11
5 21
6 43
7 85
8 171

n일때 타일을 채우는 가지수는 2**n-(이전n일때 채울수 있는 가지수)가 된다.

이 규칙을 코드로 옮기면 아래와 같다.

 
1
2
3
4
5
6
7
8
9
10
11
n=int(input())
 
def Tail(n):
    a=1
    ans=1
    while a<n:
        ans=2**(a+1)-ans
        a+=1
    return ans%10007
 
print(Tail(n))
cs

 

 

 

 

728x90
반응형