알고리즘,손코딩 문제

프로젝트 오일러 문제 2 : 피보나치 수열 중에서 4000000이하이면서 짝수인 것들만 더하시오.

알통몬_ 2017. 3. 11. 18:58
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

문제 : 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.

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

짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?


public class Question2 {


public static void main(String[] args) {

int num1 = 0, num2 = 1, sum = 0; // 변수 초기화

List<Integer> list = new ArrayList<>();//List 컬렉션 선언

while (sum <= 4000000) { //값이 4000000이 넘지 않는다면 반복

if (sum > 4000000) break; // 4000000이 넘으면 while문 빠져나옴

sum = num1 + num2; // sum의 값을 만듬 처음은 1, 그다음은 2,.....

if (sum % 2 == 0) { // 값이 2로나눠떨어지면 List 컬렉션에 저장.

list.add(sum);

}

num1 = num2;

num2 = sum;


}

int sum2 = 0;

for (Integer lists : list) {

sum2 += lists;

}

System.out.println(sum2);

}


}

전 아이디어가 떠오르지 않아서 약간 야매로 했습니다 ㅎㅎ... 전 아직 멀었네요...

다른 분들이 푸신거 보니깐 간결하고 짧게 잘 푸신게 있어서 같이 올립니다.

int sum=0; int a=1; int b=2; int temp=0; while(temp<4000000) { temp = a+b; a = b; b = temp; if(a%2 == 0) sum += a; } Console.WriteLine(sum);

반응형