문제
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 |
'과제 > 자료구조' 카테고리의 다른 글
#6. 학생 정보를 관리하는 이진 탐색트리 구현 (0) | 2020.05.26 |
---|---|
#5. 단순연결리스트를 이용한 정렬리스트 만들기 (0) | 2020.04.22 |
#4. 수식을 후위식으로 변환하고 계산하기 (2) | 2020.04.11 |
#3. 구조체,배열을 이용해 성적정렬하기 (6) | 2020.04.01 |
#2. 순환함수를 이용한 코드 완성 (0) | 2020.03.25 |