RUBY

바닥공사 본문

PS/This

바닥공사

RUBY_루비 2020. 8. 6. 10:59

출처::  https://hiruby.tistory.com/266?category=396294 

분류:: 다이나믹 프로그래밍

 

1. 문제 이해 및 해결과정

  1) 왼쪽부터 i-1의 길이가 덮개로 이미 채워져 있으면 2*1 덮개를 채우는 하나의 경우의 밖에 존재 하지 않음

  2) 왼쪽부터 i-2의 길이가 덮개로 이미 채워져 있으면 1*2 덮개를 2개 덮는경우, 2*2 덮개 하나를 넣는 경우로 2가지가 존재한다

  3) n-2 미만의 길이에 대해서 고려할 필요가 없다. 사용할 수 있는 덮개의 최대가 2*2이기 때문이다. 

  => ai=a(i-1) + a(i-2) + a(i-2)

 

2. 풀이방법

 1. 다이나믹 프로그래밍

#바닥 공사
#
import sys
sys.stdin = open("input.txt","r")
n=int(input())
dp=[0]*1001
dp[1]=1
dp[2]=3

for i in range(3,n+1):
    dp[i]=(dp[i-2]*2+dp[i-1])%796796

print(dp[n])

 

3. 오답원인

 

4. 알게된 점

 

'PS > This' 카테고리의 다른 글

효율적인 화폐 구성  (0) 2020.08.06
개미 전사  (0) 2020.08.06
1로 만들기  (0) 2020.08.05
[백준] 떡볶이 떡 만들기  (0) 2020.08.05
부품 찾기  (0) 2020.08.04
Comments