Menu
Coddy logo textTech

주요 배열 연산

Coddy C++ 여정의 기초 섹션에 포함된 레슨 — 74개 중 66번째.

자주 사용되는 배열 연산은 다음과 같습니다:

  • 배열의 모든 요소의 합계를 구합니다:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • 배열 요소의 평균 구하기:
int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);
std::cout << "Average: " << average;
  • 배열에서 최대 요소를 찾습니다:
int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}
std::cout << "Max: " << max;
  • 배열에서 최솟값을 찾습니다:
int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}
std::cout << "Min: " << min;
challenge icon

챌린지

쉬움

double 배열과 배열의 크기를 입력으로 받아 다음 연산을 수행하는 calculateStats라는 이름의 함수를 작성하세요:

  1. 배열의 모든 요소의 합계를 계산합니다.
  2. 배열 요소의 평균을 계산합니다.
  3. 배열에서 최댓값을 찾습니다.
  4. 배열에서 최솟값을 찾습니다.

함수는 합계, 평균, 최댓값, 최솟값 순서로 포함된 double 배열을 반환해야 합니다.


중요 참고 사항:
  • 루프를 제어할 때 size 매개변수를 사용하세요 — std::size()를 사용하지 마세요.
  • maxmin을 초기화할 때 arr[0]으로 시작하세요 — 이는 배열에 음수만 포함된 경우에도 올바르게 작동합니다.
  • main()에 미리 작성된 코드는 이미 new를 사용하여 동적 배열을 할당하고 delete[]로 해제합니다 — 여러분은 함수 내부에서 new double[4]를 사용하여 결과 배열을 할당하고 반환하기만 하면 됩니다.

권장 접근 방식:
  1. sum = 0, max = arr[0], min = arr[0]으로 초기화합니다.
  2. i = 0부터 i < size까지 루프를 돌며 합계를 누적하고 필요에 따라 최댓값/최솟값을 업데이트합니다.
  3. 평균을 sum / size로 계산합니다.
  4. new double[4]로 새 배열을 할당하고, 네 가지 결과를 순서대로 저장한 후 반환합니다.

치트 시트

C++에서의 일반적인 배열 연산:

모든 요소의 합계:

int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}

요소의 평균:

int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);

최대 요소:

int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}

최소 요소:

int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}

직접 해보기

#include <iostream>

double* calculateStats(double arr[], int size) {
    // newArr에 저장하기 전에 4개의 값을 계산해야 합니다.
    // 합계(0에서 시작), 최댓값, 최솟값(둘 다 arr[0]에서 시작)을 위한 변수들을 초기화합니다.
    // 배열을 순회하기 위해 for 루프를 사용합니다.
    // 루프 내부에서:
    //   - 각 요소를 합계에 더합니다.
    //   - 각 요소를 최댓값과 비교하여 더 크면 업데이트합니다.
    //   - 각 요소를 최솟값과 비교하여 더 작으면 업데이트합니다.
    // 평균 = 합계 / 크기를 계산합니다 (루프가 끝난 후).
    

    double* newArr = new double[4];
    newArr[0] = sum;
    newArr[1] = average;
    newArr[2] = max;
    newArr[3] = min;

    return newArr;
}

int main() {
    int n;

    std::cin >> n;
    std::cin.ignore();
    double arr[n];

    for (int i = 0; i < n; i++) {
        double val;
        std::cin >> val;
        arr[i] = val;
    }

    double* stats = calculateStats(arr, n);
    std::cout << "Sum: " << stats[0] << std::endl;
    std::cout << "Average: " << stats[1] << std::endl;
    std::cout << "Maximum: " << stats[2] << std::endl;
    std::cout << "Minimum: " << stats[3] << std::endl;
    delete[] stats;
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨