매일프로그래밍 - Question 2
피보나치 배열은 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 된다.
정수 N이 주어지면, N보다 작은 모든 짝수 피보나치 수의 합을 구하여라.
예제)
Input: N = 12
Output: 10 // 0, 1, 2, 3, 5, 8 중 짝수인 2 + 8 = 10.
출처 : https://mailprogramming.com/
분석
정수 N이 주어지면 N까지 피보나치 수열을 구하면서 짝수인 걸 저장하여 합한다.
피보나치 수열 { 0, 1, 1, 2, 3, 5, 8, 13, 21, ... }
a[0]+a[1]=a[2]
a[1]+a[2]=a[3]
a[2]+a[3]=a[4]
...
소스 및 풀이
public static void main(String[] args) { int N; //정수 N int num1 = 0; //피보나치 수열 0과 1로 시작 int num2 = 1; //피보나치 수열 0과 1로 시작 int num3; //다음 피보나치 수열 int sum= 0; Scanner sc = new Scanner(System.in); System.out.print("정수를 입력하세요 : "); N = sc.nextInt(); num3 = num1+num2; while(num3 <= N) { if(num3 % 2 ==0) { sum += num3; } num3 = num1 + num2; num1 = num2; num2 = num3; } System.out.println("N보다 작은 모든 짝수 피보나치 수의 합 : "+sum); }
3~7행 : 변수 선언
9행 : 정수를 입력 받기 위해 Scanner 클래스 생성
12행 : 정수 N 입력
14행 : 처음 만들어지는 0과 1 다음의 피보나치 수열 값
15행 : 다음 피보나치 수열(num3)가 N보다 작으면 계속 돌아감.
16~18행 : num3가 짝수인 경우 다 더함.
19행 : 다음 피보나치 수열(num3) 만듬.
20~21행 : num1과 num2 초기화
결과
매일프로그래밍 풀이
비슷하네!! ٩(๑>∀<๑)۶
'공부 > 프로그래밍' 카테고리의 다른 글
매일프로그래밍 - Question 1 (0) | 2018.04.16 |
---|