매일프로그래밍 [실리콘밸리 알고리즘] - 피보나치 수열 짝수의 합?! (18/02/26)


https://mailprogramming.com/

이 곳에서 1주마다 정기적으로 코딩문제를 받고, 풀어보고 있다.


실리콘밸리에서 소프트웨어 엔지니어로 일하고 있는 팀원들로 구성된 팀이라고 한다.



3. 18/02/26



피보나치 배열은 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 된다. 정수 N이 주어지면, N보다 작은 모든 짝수 피보나치 수의 합을 구하여라.



예제)
Input: N = 12
Output: 10 // 0, 1, 2, 3, 5, 8 중 짝수인 2 + 8 = 10.











#-*- coding: utf-8 -*-

def Pibo_Sum(lessthan):
    SUM = 0
    n1 = 0
    n2 = 1
    n3 = n1+n2  # skip 0, 1, 1 because they aren't even numbers.
        
    while n2+n3 < lessthan:  # Next number is less than 'lessthan'
        n1, n2 = n2, n3
        n3 = n1 + n2
        SUM += (n3 if (n3 % 2) == 0 else 0)  # Ternary operator. (if n3 is an even number, n3 is added to SUM.)
        
    return SUM


lessthan = int(input(": "))

print("Sum of even numbers:", Pibo_Sum(lessthan))




@실행결과@

: 12

Sum of even numbers: 10

: 35

Sum of even numbers: 44


후기

: 할만했다. 피보나치 수열의 개념은 예전부터 알고 있었고, 짝수 판별이나 합을 구하는 알고리즘은 쉽게 구현하였다.

댓글