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

챌린지

쉬움

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

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

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


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

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

직접 해보기

#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실력 점검

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

기초의 모든 레슨