본문 바로가기

백준문제풀이

[백준 문제풀이] 11726번 : 2×n 타일링

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

 

11726번: 2×n 타일링

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

www.acmicpc.net

💡 다이나믹 프로그래밍

  • 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법
  • 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다.
  • 하향식 : 메모이제이션(캐싱)→재귀함수사용
  • 상향식 : 전형적 형태 → 결과 저장용 리스트=DP 테이블(반복문 사용)

💡 다이나믹 프로그래밍의 조건

  • 최적 부분 구조 : 큰 문제를 작은 문제로 나눠 문제 해결
  • 중복되는 부분 문제 : 동일한 작은 문제를 반복적으로 해결

1. 소스코드

n=int(input())
dp = [0,1,2]
for i in range(3,n+1):
    dp.append(dp[i-1]+dp[i-2])
print(dp[n]%10007)