챌린지 목록으로 돌아가기
쉬움 0명 해결 정답률 0%

짝수 피보나치 항의 합

지정된 한도를 넘지 않는 짝수 피보나치 항들의 합을 구하세요.

배우게 될 내용

  • 상한까지 피보나치 항 생성하기
  • 짝수 항만 남기기
  • 알맞은 때에 반복문 멈추기

문제

원문 보기 (영어)

수열을 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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.