100만번째 피보나치수는 확실히 int 범위를 벗어나겠네요...
1904번 - 01타일
한가지 참고하셨으면 하는 것은
굳이 배열을 선언해서 메모리 잡아먹을 필요없습니다
N=10000 이면 sizeof(int)*10000 byte의 메모리를 잡으신다는 건데
어차피 기본 concept은
f(n)=f(n-1)+f(n-2) 이지 않습니까
따라서 f(n)을 구하려면 그 전상태와, 그 전전 상태만 알고있으면 됩니다
가령
a=1,b=2,c=0;
for(i=3;i<=N;i++){
c=a+b; //f(n)=f(n-2)+f(n-1)
a=b; //전전상태를 저장하는 a변수에 전상태 b값을 저장
b=c; //전상태를 저장하는 b변수에 현재상태 c값을 저장
}
이런 식으로 메모리 오버헤드를 기하급수적으로 줄일 수 있습니다
댓글을 작성하려면 로그인해야 합니다.
dmsgh7678 8년 전
답은 맞는거 같은데... 어디가 문제인지 모르겠어요.. 피보나치 수열 사용해서 한건데 맞는거 같은데 ㅠㅠ