[1번 과제] 간단한 프로그래밍 구현

정채은·2025년 6월 5일

C++ 프로그래밍

목록 보기
7/16

✅ 필수 기능 가이드

해당 기능은 반드시 구현을 해주셔야해요! 원격 강의를 들었다면 어렵지 않게 할 수 있습니다!

  • 사용자로부터 5개의 숫자를 입력 받습니다.
  • 입력 받은 숫자를 배열에 저장합니다.
  • 배열에 저장된 숫자들의 합계와 평균을 계산합니다.
  • 계산된 합계와 평균을 출력합니다.
  • 배열을 인자로 넘겨 받아서 배열 원소들의 합계를 반환하는 함수를 구현해봅니다.
  • 배열을 인자로 넘겨 받아서 배열 원소들의 평균을 반환하는 함수를 구현해봅니다.
  • 위에서 만든 합계 함수와 평균 함수를 호출하여 합계와 평균을 출력합니다.

🔥 도전 기능 가이드

사용자가 입력한 숫자 배열을 정렬하는 프로그램을 구현해보세요.

  • 정렬은 오름차순 정렬과 내림차순 정렬이 가능해야 합니다.
  • 숫자 1을 입력 받으면 오름차순 정렬, 숫자 2를 입력 받으면 내림차순 정렬을 하도록 구현해주세요.
  • algorithm 헤더의 sort 함수를 사용하지 않고 직접 구현해보세요.
  • 오름차순 정렬과 내림차순 정렬 동작을 각각 함수로 구현해보세요.

정렬 알고리즘에 대한 이해가 있어야 도전 기능을 마무리 할 수 있는데요!
구글에 정렬 알고리즘을 검색해서 쉬운 정렬 알고리즘에 대해서 공부해보고
적용하면 여러분들에게도 큰 의미가 있을겁니다!


내가 짠 코드

필수 기능

#include <iostream>

using namespace std;

// 배열을 인자로 넘겨 받아서 배열 원소들의 합계를 반환하는 함수를 구현해봅니다.
int Sum(int arrnum[], int size)
{
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arrnum[i];
    }
    return sum;
}

// 배열을 인자로 넘겨 받아서 배열 원소들의 평균을 반환하는 함수를 구현해봅니다.
double Avg(int arrnum[], int size)
{
    double sum = Sum(arrnum , size);

    return sum / size;
}

도전 기능

// 오름차순 정렬
void sortAscending(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// 내림차순 정렬
void sortDescending(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

main.cpp

int main()
{
    cout << "- - - - - - - 필수 기능 구현 - - - - - - -" << endl;
    const int size = 5;
    int num[size];

    for (int i = 0; i < size; i++) {
        // 사용자로부터 5개의 숫자를 입력 받습니다.
        cout << i+1 << ". 숫자를 입력하세요 : ";
        // 입력 받은 숫자를 배열에 저장합니다.
        cin >> num[i];         
    }

    // 위에서 만든 합계 함수와 평균 함수를 호출하여 합계와 평균을 출력합니다.
    cout << "입력 한 숫자의 합 : " << Sum(num, size) << endl;
    cout << "입력 한 숫자의 평균 : " << Avg(num, size) << endl << endl;

    cout << "- - - - - - - 도전 기능 구현 - - - - - - -" << endl;

    int count, choice;

    cout << "정렬 할 숫자의 갯수를 입력하세요 : ";
    cin >> count;

    int* sortNums = new int[count];

    for (int i = 0; i < count; i++) {
        // 사용자로부터 5개의 숫자를 입력 받습니다.
        cout << i + 1 << ". 숫자를 입력하세요 : ";
        cin >> sortNums[i];
    }
    
    cout << "정렬 방식을 선택하세요 (1: 오름차순, 2: 내림차순) : ";
    cin >> choice;

    if (choice == 1) {
        sortAscending(sortNums, count);
        cout << "오름차순 정렬 결과: ";
    }
    else if (choice == 2) {
        sortDescending(sortNums, count);
        cout << "내림차순 정렬 결과: ";
    }
    else {
        cout << "잘못된 입력입니다.";

        delete[] sortNums;
        return 1;
    }

    for (int i = 0; i < count; i++) {
        cout << sortNums[i] << " ";
    }
    cout << endl;

    delete[] sortNums;

    return 0;
}

💡알게 된 것

🫧버블 정렬(Bubble Sort)  

  • 버블 정렬(Bubble Sort)은 가장 기초적이고 직관적인 정렬 알고리즘 중 하나이다.

인접한 두 값을 비교해서 큰 값을 뒤로 보내는 방식의 정렬이다.

큰 값이 거품처럼 끝으로 "떠오르는" 모습에서 이름이 붙었다.

시간 복잡도는 O(n²) 이지만 구현이 아주 간단하여 알고리즘 학습용, 소규모 데이터에 적합하다. 특히 데이터가 많을수록 성능이 나쁘기 때문에 주의하자.


사진 출처

profile
누군가에게 추억을 만들어주는 그날까지

0개의 댓글