이 글에서는 숫자 N까지 피보나치 수열(Fibonacci Series)의 짝수 합을 구하는 자바 프로그램 작성 방법을 알아봅니다. 피보나치 수열은 바로 앞의 두 수를 더한 값을 다음 항으로 하는 수열이며, 여기서 말하는 '짝수 합'은 수열에서 짝수 번째 위치(인덱스)에 있는 항들을 모두 더한 값을 의미합니다.
피보나치 수열은 앞의 두 수를 더해 다음 수를 만들어 내며, 두 개의 초기값 F0과 F1에서 시작합니다. 초기값은 각각 0, 1 또는 1, 1로 지정할 수 있으며, 일반화하면 다음과 같습니다.
Fn = Fn-1 + Fn-2
따라서 피보나치 수열은 아래와 같은 형태가 될 수 있습니다.
F8 = 0 1 1 2 3 5 8 13
또는 다음과 같이 시작할 수도 있습니다.
F8 = 1 1 2 3 5 8 13 21
다음은 피보나치 수열의 짝수 합 계산 예시입니다.
입력
입력값이 다음과 같다고 가정해 보겠습니다.
n의 값: 10
출력
원하는 출력 결과는 다음과 같습니다.
피보나치 수열의 짝수 합은 10945입니다
알고리즘
Step 1 - 시작 Step 2 - 세 개의 정수 my_input, i, sum을 선언한다 Step 3 - 사용자에게 정수 값 입력을 요청하거나 값을 미리 지정(hardcode)한다 Step 4 - 값을 읽어 들인다 Step 5 - for 반복문으로 1부터 N까지 순회하며, 연속된 두 수의 합을 현재 피보나치 수로 저장한다 Step 6 - 결과를 화면에 출력한다 Step 7 - 종료한다
예제 1: 사용자 입력값 사용하기
이 예제에서는 Scanner를 사용해 사용자가 직접 값을 입력합니다. 온라인 코딩 도구(컴파일러)에서 실습해 보면서 동작을 확인할 수도 있습니다.
import java.util.Scanner;
import java.io.*;
public class FibonacciSum {
public static void main(String[] args){
int my_input, i, sum;
System.out.println("필요한 패키지가 임포트되었습니다");
Scanner my_scanner = new Scanner(System.in);
System.out.println("리더(Scanner) 객체가 정의되었습니다 ");
System.out.println("N의 값을 입력하세요: ");
my_input = my_scanner.nextInt();
int fibonacci[] = new int[2 * my_input + 1];
fibonacci[0] = 0;
fibonacci[1] = 1;
sum = 0;
for (i = 2; i <= 2 * my_input; i++) {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
if (i % 2 == 0)
sum += fibonacci[i];
}
System.out.printf("%d까지 피보나치 수열의 짝수 합은 %d입니다", my_input, sum);
}
}
출력
필요한 패키지가 임포트되었습니다 리더(Scanner) 객체가 정의되었습니다 N의 값을 입력하세요: 10 10까지 피보나치 수열의 짝수 합은 10945입니다
예제 2: 값 미리 정의하기
이 예제에서는 정수 값이 코드 안에 미리 정의되어 있으며, 프로그램이 이 값을 사용해 계산한 뒤 콘솔에 결과를 출력합니다.
import java.util.Scanner;
import java.io.*;
public class FibonacciSum {
public static void main(String[] args){
int my_input, j, sum;
my_input = 10;
System.out.println("N의 값: ");
int fibonacci[] = new int[2 * my_input + 1];
fibonacci[0] = 0;
fibonacci[1] = 1;
sum = 0;
for (j = 2; j <= 2 * my_input; j++) {
fibonacci[j] = fibonacci[j - 1] + fibonacci[j - 2];
if (j % 2 == 0)
sum += fibonacci[j];
}
System.out.printf("%d까지 피보나치 수열의 짝수 합은 %d입니다", my_input, sum);
}
}
출력
N의 값: 10까지 피보나치 수열의 짝수 합은 10945입니다
코드 작동 원리
두 예제의 핵심 로직은 동일합니다. 먼저 크기가 2×N+1인 배열을 만들어 인덱스 0과 1에 초기값 0과 1을 저장하고, 반복문을 돌며 앞의 두 항을 더해 나머지 항을 차례로 채웁니다. 이때 인덱스가 짝수(i % 2 == 0)일 때만 해당 항을 sum 변수에 누적합니다. N이 10일 경우 인덱스 0, 2, 4, ..., 20 위치의 항들이 더해져 최종 결과 10945가 출력됩니다.