[JAVA] 피보나치 수열에서 짝수인 수의 합 구하기

2023. 3. 19. 07:57
반응형

■ 문제

1 ,2...로시작하는 피보나치수열에서

400만 이하인 수중 짝수인 수를

모두 합하면 얼마일까?

 

피보나치수열의 각 항은

바로 앞의 항 두 개를 더한 것이 됩니다.

 

1과 2로 시작하는 경우 이 수열은 아래와 같습니다.

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...

 

ArrayList  
list.add( ) 배열에 값을 추가함. 이때 별다른 조건 없을시, 순서대로 추가됨
list.get( ) 배열에 있는 값을 불러옵니다. 'get' 말그대로 가져온다는 뜻.
list.size( ) 배열의 크기를 나타냅니다. 여기서는 for문을 이용할때 사용하였습니다.

 

 

 

직접 생각해 보는 게 중요합니다.

정확하게 답을 못 내더라도

어떻게 해야 할까 

가볍게라도 생각하고 

답안 참고해 주세요!!

 

 

■ 예시 답안

ArrayList로 Integer 타입의 배열을 생성하였습니다.

그리고 import 해주었습니다.

 

list.add를 사용해

첫 번째 배열에 1

두 번째 배열에 2를

각각 값을 추가해 주었습니다.

for 문 이용해서 배열에 값을 입력해 줍니다.

 

for 문 제일 처음을 직접 생각해 봅시다

i = 1입니다. 

그러면 

list.get( 1 - 1 ) + list.get( 1)

배열은 0번째부터 시작하니까

0번째 배열과 1번째 배열을 합한 것을

add 해줍니다. 

별도의 지정 없으니 자연스럽게

2번 배열로 값이 입력됩니다. 

그리고 

만약 400만을 넘으면 for문이 종료됩니다.

 

for(int i=1; ; i++)

자세히 보시면

어디까지 반복할지 정해주지 않았습니다.

 

if(list.get(i+1)>4000000) break;

문제 조건인 400만을 초과할 경우 

break; 문을 이용해

for문을 탈출하도록 하였습니다~

 

400만이 넘어갔으니까

맨 마지막 배열을 삭제해 줍시다

 

그리고 합을 구하기 위해

sum이라는 변수를 선언해 줍니다.

 

한 번 더 for 문을 사용해서

배열의 끝인 list.size( )까지 반복합니다.

 

그리고 만약 

2로 나눈 수가 0일 경우

( = 2의 배수일 경우 ) 

sum에 더해주고 

 

2의 배수 거나 아니거나

두 경우 모두

다시 for문으로 돌아가서 

배열 끝까지 반복합니다.

 

만약 문제에서 짝수가 아니라

홀수일 경우에는 

if(list.get(i)%2!=0)

이렇게 해주시면 됩니다.

 

값을 출력합니다.

 

 

■ 실행 결과

 

반응형

BELATED ARTICLES

more