Algorithm
BAEKJOON 1793 : 타일링
cycoding
2021. 2. 23. 16:53
Dynamic programming의 대표 예제인 타일링 문제이다.
Dynamic programming 문제인 만큼 점화식을 세워서 풀었다.
이 문제에서 점화식은 d[i] = (d[i-1] + d[i-2]*2)로 구할 수 있다.
왜냐하면 타일이 i-1까지 모두 채워져 있을 경우에는 타일을 채울 수 있는 경우가 한 가지밖에 없고, 타일이 i-2까지 모두 채워져 있을 경우에는 타일을 채울 수 있는 경우가 두 가지가 있기 때문이다.
나는 파이썬으로 풀었다.
다음은 파이썬 코드이다.
def dynamic(num):
d = [0]*251
d[0] = 1
d[1] = 1
d[2] = 3
for i in range(3, num+1):
d[i] = (d[i-1]+d[i-2]*2)
print(d[num])
while True:
try:
n = int(input())
dynamic(n)
except:
break