알고리즘 PS/DP

백준 #2748 피보나치 수 2

explorer999 2023. 9. 3. 22:04
 

2748번: 피보나치 수 2 (acmicpc.net)

 

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문을 끝낼 수 있다는 점

에서 내 풀이보다 유리하다. (메모리와 계산 시간이 절약된다)