algorithm,

알고리즘 풀이

FreeVue FreeVue Follow Apr 21, 2019 · 1 min read
알고리즘 풀이
Share this

문제

피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다.
짝수이면서 n 이하인 모든 항의 합은?

input: n = 10
output: 10 // 2 + 8 = 10

input: n = 40
output: 44 // 2 + 8 + 34 = 44

풀이

const output = (input) => {
  const nList = [0, 1]

  while (true) {
    const val = nList[nList.length - 1] + nList[nList.length - 2]

    if (val >= input) break

    nList.push(val)
  }

  return nList.reduce((prev, cur) => (!(cur % 2) ? prev + cur : prev), 0)
}

output(10) // 10
output(40) // 44
output(4000000) // 4613732

[출처: http://euler.synap.co.kr/prob_detail.php?id=2]