🚩 문제 설명
◾ 피보나치 수열에서 400만 이하이면서 and 짝수인 항의 합 구하기
◾ 간단한 덧셈 문제
📑 문제 풀이
//20200107 오일러 알고리즘 Problem 2
#include <iostream>
using namespace std;
#define MAX 4000000
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr); //cin의 입력 속도를 증가시켜줌
int num1, num2, num3; //num3 = num1 + num2
int sum = 2;
num1 = 1;
num2 = 2;
num3 = num1 + num2; //num3 = 1+2 =3
while (num3 <= MAX) // MAX값 이하까지 돈다
{
num1 = num2; // num1 = 1 -> num1 = 2
num2 = num3; // num2 = 2 -> num3 = 3
num3 = num1 + num2; // num3 = 2+3 = 5
if (num3 >= MAX)
break;
if (num3 % 2 == 0)
sum += num3;
cout << "\t" << "sum : "<< sum << "\n";*/
}
cout << "sum : " << sum;
}
💬 Point
👉 A[n+2] = A[n] + A[n+1]
👉 if num % 2 == 0
◾ MAX 상수를 4000,000 으로 잡는다.
◾ 피보나치수열 식을 사용하여 수를 더한다.
◾ 더한 수가 만약 MAX 보다 크다면 멈춘다.
◾ 만약 더한 수가 2로 나누어 떨어진다면 (짝수라면) sum에 더한다.
but,
✅ sum 변수의 위치를 앞으로 이동해줬으면 좋았을 것
✅ 그러면 굳이 앞에서 sum을 2로 초기화하지 않아도 됐을 것
✅ while 반복문의 조건을 MAX 값 미만으로 뒀으면 굳이 break를 쓰지 않아도 됐었을 것
문제 푸는 텀이 5일이 되었다.
매일매일 한다는 약속은 어디갔나.
➕ Solution 풀이 사이트 첨부
https://www.mathblog.dk/project-euler-problem-2/
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > etc' 카테고리의 다른 글
Problem #006 (0) | 2020.01.21 |
---|---|
Problem #005 (0) | 2020.01.20 |
Problem #004 (0) | 2020.01.16 |
Problem #003 (0) | 2020.01.08 |
Problem #001 (0) | 2020.01.02 |