[JAVA] 피보나치 수열에서 짝수인 수의 합 구하기
■ 문제
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)
이렇게 해주시면 됩니다.
값을 출력합니다.
■ 실행 결과