Daily Algorithm - Day 1

105·2024년 12월 21일
0

Daily Algorithm

목록 보기
2/30

Even Fibonacci Numbers

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

400만 이하의 피보나치 수열 중 짝수의 합을 구하는 문제이다.

내가 생각해낸 구현 방법은

  1. n번째 피보나치 수열을 출력하는 함수를 구현한다.
  2. while 을 활용해서 400만 이하의 피보나치 수열 중 짝수를 전부 더한다.

먼저 n번째 피보나치 수열을 출력하는 함수를 구현해주자.

//Python

def func(n):
    a = 1 
    b = 1
    if n == 1 or n == 2:   # 첫 두 수열은 1로 예외처리
        return 1
    for i in range(1, n):  # 3번째 수열부터 피보나치 수열을 구현
        a = b
        b = a+b 
    return a

다음은 400만 이하의 피보나치 수열 중 짝수를 전부 더해준다.

i = 1
while func(i) <= 4000000:
    if func(i) % 2 == 0:
        sum_even_fib += func(i)
    i = i+1
        
print(sum_even_fib)

>>> 4613732

이렇게 끝을 내도 좋지만 배열을 활용해서 사용된 짝수 피보나치 수열도 전부 구해보자.

even_fib = [] # 짝수인 피보나치 수열
i = 1
while func(i) <= 4000000:
    if func(i) % 2 == 0:
        sum_even_fib += func(i)
        even_fib.append(func(i))
    i = i+1

solution(4000000)

print(even_fib)
print(sum(even_fib))

>>> [2, 8, 34, 144, 610, 2584, 10946, 46368, 196418, 832040, 3524578]
4613732

오늘은 여기까지

-2024.12.21-

profile
focus on backend

0개의 댓글