반복문(Java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Problem002 { public static void main(String[] args) { int n1 = 1, n2 = 2; int n3 = n1 + n2; int sum = 2; while(n3 <= 4000000) { n3 = n1 + n2; if(n3%2 == 0) { sum += n3; } n1 = n2; n2 = n3; } System.out.println("Sum:" + sum); } } | cs |
재귀함수(C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h> #define LIMIT 4000000 int fib(int); int main() { int i; int sum = 0; int temp; for (i = 1; (temp = fib(i)) <= LIMIT; ++i) { if (temp % 2 == 0) { sum += temp; } } printf("sum: %d\n", sum); return 0; } int fib(int n) { return ((n == 0) || (n == 1)) ? n : (fib(n - 1) + fib(n - 2)); } | cs |
정답: 4613732
Java 실행 시간: 0.0003초
C 실행 시간: 2초
참고로 C 코드에서 for 문 부분을 다음과 같이 쓸 수도 있다.
for (int i = 1; temp <= LIMIT; ++i, temp = fib(i))
{
if (temp % 2 == 0) { sum += temp; }
}
실행시간의 차이는 거의 없다.
'Programming > Solutions' 카테고리의 다른 글
[Project Euler] Problem 004 (0) | 2019.03.20 |
---|---|
[Project Euler] Problem 003 (0) | 2019.03.19 |
[BAEKJOON] 2839번: 설탕 배달 (0) | 2019.03.19 |
[BAEKJOON] 1002번: 터렛 (0) | 2019.03.19 |
[Project Euler] Problem 001 (0) | 2019.03.17 |