728x90
반응형
가로의 길이가 N, 세로의 길이가 2인 직사각형 형태의 얇은 바닥이 있다.
이 바닥을 1x2의 덮개, 2x1의 덮개, 2x2의 덮개를 이용해 채우고자 한다.
이때 바닥을 채우는 모든 경우의 수를 구하라.
n=int(input())
d=[0]*1000000
d[1]=1
d[2]=3
for i in range(3,n+1):
d[i]=d[i-1] + d[i-2]*2
print(d[n])
d [i]=가로가 i일 때 바닥을 채우는 모든 경우의 수
d [i]=d [i-1] + d [i-2]*2
가로가 i일 때..
"i-1까지의 것" + "2x1 짜리 타일 1개"로 구성할 수도 있고
"i-2까지의 것" + "2x2 짜리 타일 1개"로 구성할 수도 있고
"i-2까지의 것" + "1x2 짜리 타일 2개"로 구성할 수도 있다.
(i-2까지의 것 + 2x1 짜리 타일 2개로 구성하는 경우를 고려하지 않은 이유는... i-1까지의 것+2x1 짜리 타일 1개 에서 이미 고려되었기 때문이다)
728x90
반응형
'코딩 > 이코테-파이썬' 카테고리의 다른 글
최단 경로 알고리즘: 플로이드 워셜 (0) | 2022.07.27 |
---|---|
최단 경로 알고리즘: 다익스트라(Dijkstra) (0) | 2022.07.26 |
다이나믹 프로그래밍: 효율적인 화폐 구성 (0) | 2022.07.19 |
다이나믹 프로그래밍: 1로 만들기 (0) | 2022.07.19 |
다이나믹 프로그래밍: 개미 전사 (0) | 2022.07.19 |
댓글