문제
수열을 1과 2로 시작합니다. 이후의 각 항은 이전 두 항의 합입니다. 값이 limit 이하인 짝수 항만 포함하여 모두 더하세요.
even_fibonacci_sum(limit)을 구현하세요.
입력
limit: 포함될 수 있는 가장 큰 항의 값입니다.
출력
합계를 반환하세요. 조건에 맞는 항이 없다면 0을 반환하세요.
제약 조건
0 ≤ limit ≤ 10¹⁵. 결과는 signed 64비트 정수 범위에 들어갑니다.
예시
예시 1
입력:
limit = 50
예상 출력:
expected = 44
입력:
long long limit = 50;
예상 출력:
long long expected = 44;
입력:
long limit = 50;
예상 출력:
long expected = 44;
설명
짝수 항은 2, 8, 34입니다. 이들의 합은 44입니다.
예시 2
입력:
limit = 1
예상 출력:
expected = 0
입력:
long long limit = 1;
예상 출력:
long long expected = 0;
입력:
long limit = 1;
예상 출력:
long expected = 0;
설명
첫 번째 짝수 항은 2인데, 이것이 limit을 초과합니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
전체 수열이 아니라 짝수인 피보나치 항만 필요하다.
힌트 2
다음 항이 제한값을 넘을 때까지 생성하고, 조건을 만족하는 항만 더한다.
힌트 3
제한값 자체가 피보나치 수일 때의 경계를 주의한다.
예상 복잡도
시간 O(log limit), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.