주제: 평균 구하기
이번 강좌에서는 코딩테스트에서 자주 출제되는 문제 중 하나인 평균 구하기 문제를 다루겠습니다. 문제의 정의와 해결 방법을 단계별로 설명하고, 최종적으로 C++ 코드로 구현해보겠습니다.
문제 정의
주어진 정수 배열의 모든 요소의 평균을 구하는 프로그램을 작성하시오. 배열의 길이는 N이고, 배열의 요소는 모두 정수입니다. 평균값은 소수점 이하 2자리까지 구해야 하며, 정수 부분과 소수 부분은 ‘.’으로 구분지어야 합니다.
입력 형식:
- 첫 번째 줄에 배열의 길이 N (1 ≤ N ≤ 1000)이 주어진다.
- 두 번째 줄에 배열의 N개의 정수 (각 정수는 -10,000 이상 10,000 이하)가 공백으로 구분되어 주어진다.
출력 형식:
평균값을 소수점 이하 두 자리까지 출력하시오.
예제
입력:
5
10 20 30 40 50
출력:
30.00
문제 해결 방법
이 문제를 해결하기 위한 절차는 다음과 같습니다:
- 입력에서 N을 읽어來 배열의 길이를 결정합니다.
- 정수 배열을 읽어올 때, 각 요소를 합산합니다.
- N으로 합계를 나누어 평균을 구합니다.
- 출력 시 소수점 두 자리까지 포맷팅합니다.
C++ 코드 구현
이제 위의 절차를 따르는 C++ 코드를 작성해봅시다:
#include
#include // std::setprecision 사용을 위해
#include
using namespace std;
int main() {
int N;
cout << "배열의 길이를 입력하세요: ";
cin >> N; // 배열의 길이 입력
vector arr(N); // 크기가 N인 벡터 선언
int sum = 0;
cout << "배열의 요소를 공백으로 구분하여 입력하세요: ";
for (int i = 0; i < N; ++i) {
cin >> arr[i]; // 배열 요소 입력
sum += arr[i]; // 요소 합산
}
double average = static_cast(sum) / N; // 평균 계산
cout << "평균: " << fixed << setprecision(2) << average << endl; // 소수점 두 자리 포맷팅
return 0;
}
코드 설명
- #include <iostream>: C++에서 입출력을 위한 라이브러리 입니다.
- #include <iomanip>: 출력의 포맷을 지정하기 위해 필요한 헤더 파일입니다. 여기서는 소수점 이하 자릿수를 설정하는 데 사용됩니다.
- vector
arr(N): C++의 동적 배열인 벡터를 사용하여 크기가 N인 정수형 배열을 선언합니다. - sum: 입력된 배열 요소의 합을 저장하는 변수입니다.
- cin >> arr[i]: 사용자가 입력한 값을 배열의 각 요소에 할당합니다.
- average: 총합을 N으로 나누어 평균값을 계산합니다. 또한, 정수형 Sum을 double로 형변환하여 소수점 이하 자리를 유지합니다.
- std::fixed & std::setprecision(2): 소수점 이하 두 자리까지 출력하기 위한 표기 방식을 설정합니다.
복잡도 분석
이 문제의 시간 복잡도는 O(N)입니다. 각 요소를 한 번씩만 순회하면서 합계를 구하므로, 입력의 크기에 비례하여 계산 시간이 증가합니다. 공간 복잡도 또한 O(N)으로, 입력된 데이터를 저장하기 위해 N개의 공간을 사용합니다.
결론
이번 강좌에서는 평균값을 계산하는 문제를 통해 C++의 기본적인 입출력 및 벡터 사용법을 익혔습니다. 문제를 해결하기 위해 단계를 나누어 체계적으로 접근하는 것이 중요하며, 각 단계에서 발생할 수 있는 오류를 예상하고 처리하는 것이 코딩 테스트에서의 좋은 습관입니다. 앞으로 더 다양한 문제를 연습하며 알고리즘 실력을 키워 나가세요!