/*
1부터 n까지의 합을 구하는 방법은 다음과 같이 3가지가 있다
알고리즘 A: sum=n(n+1)/2 공식 사용
알고리즘 B: sum=1+2+...+n
알고리즘 C: sum=(0)+(1)+(1+1)+(1+1+1)+...+(1+1+...+1)
각 알고리즘을 함수로 구현하라. n을 매개변수로 전달받고 결과를 반환한다
n에 대해 각 함수를 호출하여 세 알고리즘의 계산결과가 동일함을 확인하라.
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int sumAlgorithmA(int n);
int sumAlgorithmB(int n);
int sumAlgorithmC(int n);
int main(void)
{
clock_t start, end;
double duration; //걸린 시간
int n, result[3];
cout << "n 입력: ";
cin >> n;
start = clock();
result[0] = sumAlgorithmA(n);
end = clock();
cout << "알고리즘 A 결과: " << result[0] << endl;
duration = (double)(end - start) / CLOCKS_PER_SEC;
cout << "알고리즘 A를 수행하는데 걸린 시간: " << duration << endl << endl;
start = clock();
result[1] = sumAlgorithmB(n);
end = clock();
cout << "알고리즘 B 결과: " << result[1] << endl;
duration = (double)(end - start) / CLOCKS_PER_SEC;
cout << "알고리즘 B를 수행하는데 걸린 시간: " << duration << endl << endl;
start = clock();
result[2] = sumAlgorithmC(n);
end = clock();
cout << "알고리즘 C 결과: " << result[2] << endl;
duration = (double)(end - start) / CLOCKS_PER_SEC;
cout << "알고리즘 C를 수행하는데 걸린 시간: " << duration << endl << endl;
return 0;
}
int sumAlgorithmA(int n)
{
return ((n)*(n + 1)) / 2;
}
int sumAlgorithmB(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
sum += i;
return sum;
}
int sumAlgorithmC(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
for (int j = 0; j < i; j++)
sum += 1;
return sum;
}
알고리즘 A: O(1)
알고리즘 B: O(n)
알고리즘 C: O(n^2)
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] C++로 쉽게 풀어쓴 자료구조
'C++ > C++로 쉽게 풀어쓴 자료구조' 카테고리의 다른 글
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 4 (7) | 2017.09.27 |
---|---|
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 3 (12) | 2017.09.23 |
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 2(2) (0) | 2017.09.20 |
C++/C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 2(1) (0) | 2017.09.20 |
C++로 쉽게 풀어쓴 자료구조 2장 연습문제 (2) | 2017.09.19 |