250x250
반응형
Notice
Recent Posts
Recent Comments
Link
종식당
[이코테 - 다이나믹 프로그래밍] 바닥 공사 본문
728x90
반응형
- 문제 설명
N을 입력받고 2xN 크기의 바닥을 위 3가지 종류의 덮개로 채워야 할 때의 경우의 수를 출력하면 된다.
위를 참고하여 점화식을 유도해낸다음 코드에 적용시키면 된다.
- 문제 코드
N = int(input())
dp = [0]*(N+1)
dp[1] = 1 #2x1 짜리 하나 총 1가지
dp[2] = 3 #2x1 짜리 두개,1x2 짜리 두개, 2x2 짜리 하나 총 3가지
for i in range(3,N+1):
dp[i] = (dp[i-1] + 2*dp[i-2]) % 796796
print(dp[N])
점화식만 문제를 보고 뽑을 줄 알고 초기 설정만 잘해주면 어렵지 않게 dp문제를 풀 수 있을 것 같다.
- 관련 문제
https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
- 제출 코드
import sys
input = sys.stdin.readline
N = int(input())
dp = [0]*(1001)
dp[1] = 1 #2x1 짜리 하나 총 1가지
dp[2] = 2 #2x1 짜리 두개,1x2 짜리 두개 총 2가지
for i in range(3,N+1):
dp[i] = (dp[i-1] + dp[i-2]) % 10007
print(dp[N])
728x90
반응형
'이코테' 카테고리의 다른 글
[이코테 - 다이나믹 프로그래밍] 1로 만들기 (0) | 2024.02.14 |
---|---|
[이코테 - 이진탐색] 떡볶이 떡 만들기 (0) | 2024.02.06 |
[이코테 - 이진탐색] 부품 찾기 (0) | 2024.02.05 |
[이코테 - 구현] 왕실의 나이트 (0) | 2024.02.05 |
[이코테 - 구현] 상하좌우 (2) | 2024.01.25 |