1일 1문제, 프로그래머스

간단한) 피보나치 수열

Hoguz 2018. 6. 20. 22:20

피보나치 수열은 재귀식으로 너무 유명하다


f(0) = 0

f(1) = 1

f(n) = f(n-1) + f(n-2)


인데, 이걸 재귀식으로 하여 돌리면 실제론 무진장 오래 걸린다.


기본적으로 함수가 실행되면 stack으로 쭉쭉 위에 쌓이기 때문에 좀만 큰 숫자를 넣으면 동작이 안될것이다.


이럴땐 간단히 동적프로그래밍을 통해서 구현할 수 있다.

동적프로그래밍의 핵심은 기억해놓는것, 저 멀리 있는거를 나중에 가져오는게 아니니까 미리미리..


파이썬 코드로 하면 이러하다


a = 0;

b = 1;

for i in range num:

a, b = b, a+b;

return b


우리가 필요로 한건 앞에 두개의 숫자만 필요로 하니까 주구장창 두개만...사용.


동적프로그래밍 개념을 알아도 실제로 적용하는 것은 매우 힘들다. 후