본문 바로가기
프로그램

[파이썬] 문제 : 피보나치 수열 누적합

by 오디세이99 2022. 11. 28.
728x90
반응형

(문제)

자연수 하나를 입력받고 그 입력받은 숫자보다 작거나 같은 숫자들 중에
피보나치 수열에 해당하는 수의 누적합을 구하여라.
피보나치 수열 :  번째 항의 값이 0이고 두 번째 항의 값이 1일 때,
이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다.
ex) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ...
[입력예시]
50
[출력예시]
88
[입력예시]
100
[출력예시]
232

 

 

(방법)

no = int(input("입력 : "))       # 입력 받음. 입력 받은 문자열을 정수로 변환

p_lst = [0,1]                    # 피보나치수열의 0, 1 은 기본 추가
while True:                     # 무한반복. 아래 코드에서 break로 빠져나감
    n = p_lst[-2] + p_lst[-1]    # 리스트에서 인덱스[-1],[-2]는 뒤에서 첫번째, 뒤에서 두번째 의미. 새로운 수열값을 만듬
    #  print(n)                   # 디버기용
    if n > no:                   # 만들어진 피보나치수열값이 입력값보타 크면 종료
        break
    p_lst.append(n)              # 수열 리스트에 추가
    
# print(p_lst, '/',sum(p_lst))
print(sum(p_lst))                 # 리스트 변수를 sum 함수를 사용해서 헙계를 구해서 출력
728x90
반응형

댓글