코딩테스트

[백준][파이썬]11727번: 2 x n 타일링 2

과아아앙 2021. 5. 13. 23:34

문제 출처 : https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

내 풀이

n = int(input())
answer = 1
for i in range(1, n):
    if i % 2 == 1:
        answer  = (answer * 2) + 1
    else:
        answer = (answer * 2) - 1
print(answer % 10007)

설명

잘 생각하면 각 항마다 규칙성이 있을 것 같았다.

그렇게 찾아본 결과.

다음 항으로 넘어갈 때, (이전 항) * 2 + ( + 1 or - 1)이라는 것을 알았다.

좀 더 정확히는 i가 홀 수일때는 (answer * 2) + 1, 짝 수일때는 (answer * 2) - 1

라는 규칙성이 있었고 이 후 구현은 간단했다.