Algorythm/프로그래머스 스쿨 (C 언어)

[C] 프로그래머스 스쿨_4주차 문제 1: 배열의 평균

gapsoo 2023. 7. 30. 18:09


[1] 문제

 

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 0 ≤ numbers의 원소 ≤ 1,000
  • 1 ≤ numbers의 길이 ≤ 100
  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

 

입출력 예

numbers result
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 5.5
[89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 94.0

 

 

입출력 예 설명

입출력 예 #1

  • numbers의 원소들의 평균 값은 5.5입니다.

입출력 예 #2

  • numbers의 원소들의 평균 값은 94.0입니다.

 

 

 


[2] 정답 및 해석

 

(1) 정답 코드

 

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
double solution(int numbers[], int length) {
    double sum = 0.0;
    for (int i = 0; i < length; i++) {
        sum += numbers[i];
    }
    return sum / length;
}
cs

 

 

(2) 해석

 

1
double solution(int numbers[], int length) {
cs

 

  • solution 함수는 double 형태의 값을 반환한다. 두 개의 매개변수 numbers와 length를 받는다. numbers는 정수 배열을 가리키는 포인터이고, length는 배열의 길이를 나타낸다.

 

 

1
    double sum = 0.0;
cs

 

  • sum이라는 이름의 double 형 변수를 선언하고 0.0으로 초기화한다. 이 변수는 배열 numbers의 원소들을 누적해서 더하는 역할을 한다.

 

1
    for (int i = 0; i < length; i++) {
cs

 

  • for 문을 이용하여 반복 작업을 시작한다. i는 루프 제어 변수로, 0에서부터 시작하여 length - 1까지 증가하면서 반복한다. 배열의 인덱스는 0부터 시작하므로, 이러한 형태로 반복문을 작성한다.

 

1
        sum += numbers[i];
cs

 

  • 루프 내부에서 sum 변수에 numbers[i] 값을 더한다. numbers[i]는 배열 numbers의 i번째 원소를 의미한다. 따라서 루프가 모두 실행되면, sum 변수에는 배열 numbers의 모든 원소의 합이 저장된다.

 

1
    }
cs

 

  • for 루프의 끝을 표시한다. 루프를 벗어나면 모든 배열 원소를 더한 결과가 sum에 저장된다.

 

1
    return sum / length;
cs

 

  • 함수의 반환 값으로 sum을 length로 나눈 값을 반환한다. 이것은 배열 numbers의 원소들의 평균값을 의미한다.
  • 함수의 정의를 마치고 나면, 이어지는 main 함수에서 solution 함수를 호출하여 결과를 출력하게 된다. main 함수에서는 두 개의 배열 numbers1과 numbers2를 초기화한 후, solution 함수를 호출하여 각 배열의 평균값을 계산하고 출력한다.

 

 

 


[3] 풀이 및 오답

 

여려워서 책을 찾아보면서 공부했더니 비슷한 문제가 있어서 한 번에 맞출 수 있었다.

 

 

 


[4] 느낀 점

 

변수를 여러 개 설정해야 해서 헷갈렸다...