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)로 해야한다.
'Data Science > 알고리즘 공부' 카테고리의 다른 글
[백준][파이썬] 1,2,3 더하기 (0) | 2020.07.21 |
---|---|
[파이썬][알고리즘] 11727 2Xn 타일링 2 (0) | 2020.07.21 |
[백준][파이썬] 1463번 1로 만들기 (0) | 2020.07.19 |
[백준][파이썬] 2206 벽 부수고 이동하기 - 메모리초과 (0) | 2020.04.13 |
[백준][파이썬] 16768 Mooyo Mooyo (0) | 2020.04.08 |
댓글