알고리즘 PS/DP
백준 #2748 피보나치 수 2
explorer999
2023. 9. 3. 22:04
2748번: 피보나치 수 2
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
<내 풀이>
arr=[0]*90
arr[0]=1
arr[1]=1
for i in range(2,90):
arr[i]=arr[i-1]+arr[i-2]
a=int(input())
print(arr[a-1])
그냥 피보나치 수 구하는 문제인데 아주 어렵게 푼 방법이다.
#
첫번째 피보나치 수= arr[0]이라고 설정해서... a번째 피보나치 수=arr[a-1]이다.
<풀이 후>
다른 사람들의 풀이를 보면서 알게 된 점
1.
배열 설정을 저렇게 할 필요가 없다.
arr=[0,1] 해놓고 다음 값들은 for문 안에서 append받으면 됨.
2.
애초에 굳이 배열을 쓸 필요가 없다.
a=0, b=1이라고 초깃값을 설정하고,
for문 안에서
a=b, b=a+b 라고 a랑 b를 계속 재정의하면 새로운 값을 배열에 저장하는 거랑 다를 게 없음.
1번 방식과 2번 방식은
초깃값을 간단하게 설정할 수 있다는 점, 입력값에 따라서 더 빨리 for문을 끝낼 수 있다는 점
에서 내 풀이보다 유리하다. (메모리와 계산 시간이 절약된다)