... | @@ -134,3 +134,62 @@ static void Main(string[] args) |
... | @@ -134,3 +134,62 @@ static void Main(string[] args) |
|
Console.WriteLine(sum); //sum은 233168
|
|
Console.WriteLine(sum); //sum은 233168
|
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
프로젝트 오일러 2번 문제
|
|
|
|
>피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
|
|
|
|
>1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
|
|
|
|
>짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?
|
|
|
|
|
|
|
|
```c#
|
|
|
|
class Program
|
|
|
|
{
|
|
|
|
public int pibonacci(int num, int[] arr)
|
|
|
|
{
|
|
|
|
if (num < 1)
|
|
|
|
{
|
|
|
|
Console.WriteLine("0이하의 숫자가 들어갈 수 없습니다.");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (num == 1) //항의 번호가 1과 2일 때 초기화
|
|
|
|
{
|
|
|
|
arr[1] = 1;
|
|
|
|
return arr[1];
|
|
|
|
}
|
|
|
|
if (num == 2)
|
|
|
|
{
|
|
|
|
arr[2] = 2;
|
|
|
|
return arr[2];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (arr[num] != 0) //나머지 경우
|
|
|
|
{
|
|
|
|
return arr[num];
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
arr[num] = pibonacci(num - 2, arr) + pibonacci(num - 1, arr);
|
|
|
|
return arr[num];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void Main(string[] args)
|
|
|
|
{
|
|
|
|
int[] store = new int[50]; //값을 저장할 배열 생성
|
|
|
|
int loopNum = 35;
|
|
|
|
int sum = 0;
|
|
|
|
|
|
|
|
Program prog = new Program();
|
|
|
|
Console.WriteLine(prog.pibonacci(loopNum, store));
|
|
|
|
|
|
|
|
foreach (int num in store)
|
|
|
|
{
|
|
|
|
if (num % 2 == 0 && num <= 4000000) sum += num; //짝수이면서 400백만 이하인 항
|
|
|
|
}
|
|
|
|
Console.WriteLine(sum); //합계는 4613732
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|