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
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 문제 : 입력 받은 값이 글자인지, 숫자인지 구분하기 (0) | 2022.11.28 |
---|---|
[파이썬] 문제 : 중국집 메뉴 주문 (0) | 2022.11.28 |
[파이썬] 문제 : pandas Dataframe의 Column 값 수정 (0) | 2022.11.28 |
[파이썬] 문제 : 정수 n을 입력 받고 숫자 삼각형 출력 (정보올림피아드 문제) (0) | 2022.11.28 |
[파이썬] 문제 : 정수 홀수로 다이아몬드 정렬로 출력 (0) | 2022.11.28 |
댓글