본문 바로가기
카테고리 없음

[백준] 11727번: 2×n 타일링 2 - python

by 육빔 2024. 3. 28.
728x90

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 

타일링 버전 2가 있길래 기대하며 바로 풀었다.

 

비슷하네 라고 생각햇는데 비슷했다. 

이것도 처음부터 생각해가면서 얼마씩 증가할려나 라는 감으로 때려 맞춰서 풀었다. 

그리면서 하면 패턴을 쉽게 찾을 수 있는 문제인 것 같다.

 

i-2 와 연관관계과 있을 것 같아서 바로 때려맞춘 코드

바로 틀렷다고 해서 생각해보니 홀수 짝수 증감을 나눠서 생각해야되는 것 같았다.

 

n = int(input())

dp = [0] * 1001
dp[1] = 1
dp[2] = 3
dp[3] = 5
dp[4] = 11
for i in range(4, 1001):
    dp[i] = dp[i-2] * 4 -1

print(dp[n] % 10007)

 

 

바로 수정

 

n = int(input())

dp = [0] * 1002
dp[1] = 1
dp[2] = 3
dp[3] = 5
dp[4] = 11
for i in range(4, 1001):
    if i % 2 == 0:
        dp[i] = dp[i-2] * 4 -1
    else:
        dp[i] = dp[i-1] * 2 -1

print(dp[n] % 10007)

 

완성