26529번: Bunnies

You’re going to raise farm animals and you decided to start with bunnies, the easiest of animals. To your surprise they are breeding like rabbits, so much so that you’re unable to count them accurately. However, you know that rabbits’ breeding patter

www.acmicpc.net

 

 

<내 풀이>

n=int(input())

for _ in range(n):
    a=int(input())
    arr=[1,1]
    for i in range(2,a+1):
        arr.append(arr[-1]+arr[-2])
       
    print(arr[-1])

# 그냥 피보나치 수 구하는 문제

 

 

# 어려웠던 점

 

1. 

for문 범위 제한이 헷갈림. a인지 a-1인지 a+1인지...ㅜ

 

2. 입력값을 받아서 for문 돌리는 거 자체를 반복적으로 하는데 arr을 전역 배열로 입력 받기 전에 넣어버려서 자꾸 그 전 입력 때 추가된 arr에다가 다음 입력때도 값을 더 추가하고 있었음. 

 

arr은 input 받고 for문 시작하기 전에 넣어서 해결함. 

 

 
 

 

'알고리즘 PS > DP' 카테고리의 다른 글

백준 #1463 1로 만들기  (0) 2023.10.02
백준 #9625 BABBA 파이썬  (0) 2023.09.15
다이나믹 프로그래밍이란?  (0) 2023.09.03
백준 #2775 부녀회장이 될테야  (0) 2023.09.03
백준 #17202 핸드폰 번호 궁합  (0) 2023.09.03
 

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

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

 

+ Recent posts