IT/ps
백준 11727번 2xn 타일링 2
u149_cinderella
2025. 1. 21. 21:42
저번 문제와 거의 유사하다
https://idol-kotori.tistory.com/10
백준 11726번
dp가 너무 어렵다 그래서 그냥 푸는 dp문제들은 전부 정리해서 포스팅하기로 했다 다른 사람이 한 설명을 봐도 잘 이해가 안됐는데 gpt한테 물어보고 그림도 그려보니까 이해가 됐다. n=1일때는
idol-kotori.tistory.com
똑같이 그림그려보면
이런식으로 3가지 경우로 나눠볼수있다
따라서
초기값은
n==1 return 1 n==2 return 3
점화식은 전과 동일하게
d[n]=d[n-1]+d[n-2]
라고 생각했었지만 d[n-2]가 2개 존재하기때문에 2번 더해줘야한다
d[n]=d[n-1]+d[n-2] +d[n-2]
이 형태가 되어야한다
import sys
n=int(sys.stdin.readline().rstrip())
data=[0]*(n+1)
def dp(n):
if data[n]!=0:
return data[n]
if n==1:
data[n]=1
return 1
elif n==2:
data[n]=3
return 3
data[n]=(dp(n-1)+dp(n-2)+dp(n-2))%10007
return data[n]
print(dp(n))
저번 문제랑은 다르게 살짝 더 깔끔하게 수정해봤다