C++/C++로 쉽게 풀어쓴 자료구조

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 1

꾸준함. 2017. 9. 18. 22:38

/*

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++로 쉽게 풀어쓴 자료구조




반응형