본문으로 바로가기

매일프로그래밍 - Question 2

category 공부/프로그래밍 2018. 4. 17. 17:34

매일프로그래밍 - 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