문제

1부터 100만까지 순차적으로 더하는 연산의 수행시간과 다른 덧셈 알고리즘을 이용한 연산의 수행시간을 구하시오


풀이

1부터 100만까지 더하는 반복문을 그대로 작성하고, 저는 n(n+1)/2의 합공식을 이용한 알고리즘으로 풀었습니다. 

 

코드 및 결과


알고리즘1(순차 덧셈)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    clock_t start, end;
    double duration;
    long long sum = 0;
    start = clock();
    for (int i = 1; i <= 1000000; i++)
        sum += i;
    end = clock();
    duration = (double)(end - start) / CLOCKS_PER_SEC;
    printf("수행시간은%f초입니다.\n", duration);
    printf("총합은%lld입니다.\n", sum);
}
cs



알고리즘2(합공식)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
long long func(long long n);
int main()
{
    clock_t start, end;
    double duration;
    long long sum = 0;
    start = clock();
    sum = func(1000000);
    end = clock();
    duration = (double)(end - start) / CLOCKS_PER_SEC;
    printf("수행시간은%f초입니다.\n", duration);
    printf("총합은%lld입니다.\n", sum);
}
long long func(long long n)
{
    return n * (n + 1/ 2;
}
cs




+ Recent posts