728x90

백준 파이썬 공부 2025.02.12
11726번 2xn 타일링 (실버 3)

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



2. 입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)

3. 출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.

4. 문제 풀이
다이나믹 프로그래밍 DP를 이용해서 풀어보자
점화식을 먼저 찾아야한다.

1 2 3 5 8 ...
인걸로 보아, 점화식은 dp[i] = dp[i-1] + dp[i-2] 인 것 같다.

알고보니 피보나치 수열이었다.

>>>코드

def DP(n):
    dp = [0] * (n+1)
    
    for i in range(1, n+1):
        if i == 1:
            dp[i] = 1
        elif i == 2:
            dp[i] = 2
        else:
            dp[i] = dp[i-1] + dp[i-2]
        
    return dp[n]

n = int(input())
print(DP(n) % 10007)



5. 문제 링크
https://www.acmicpc.net/problem/11726

728x90

+ Recent posts