본문 바로가기
Data Science/알고리즘 공부

[백준][파이썬] 11726 2Xn 타일링

by titaniumm 2020. 7. 21.
num = int(input())
numlist= [2,3]
for i in range(2,num-1):
    tem1 = i-2
    tem2 = i-1
    tem = numlist[tem1]+numlist[tem2]
    numlist.append(tem%10007)

if num == 2:
    print(2)
elif num == 1:
    print(0)
else:
    print(numlist[-1])

다이나믹 프로그래밍 문제이다.

피보나치 수열이지만, 문제를 보고 바로 피보나치 수열이라는것을 파악하진 못했다.

결국 다이나믹 프로그래밍 문제는 규칙을 찾는것이 중요하다. 

메모리를 아끼려면, 리스트에 저장을 안하고 구해도 괜찮을것 같다.

 

중요한점은 10007을 매번 나눠주어야 한다는 것이다.

<수정> num ==1일때 print(1)로 해야한다.

댓글