Coding Test/SW Expert Academy
[SWEA] 1984. 중간 평균값 구하기 c++
owls
2022. 11. 15. 14:22
728x90
- 문제
10개의 수를 입력 받아, 최대 수와 최소 수를 제외한 나머지의 평균값을 출력하는 프로그램을 작성하라.
(소수점 첫째 자리에서 반올림한 정수를 출력한다.)
- 문제 해결
1. sort함수를 사용하여 오름차순 정렬을 한다.
2. accumulate함수를 사용하여 벡터 원소들의 총 합을 구한다.
최댓값, 최소값을 제외하기 위해 vec.begin() + 1 ~ vec.end() - 1로 범위 지정 한다.
3. 소수점 계산을 위해 double형에 계산한 값을 저장한다.
4. round함수를 사용하여 소수점 첫째 자리에서 반올림한다.
(floor 함수를 사용한다면 결과에 0.5를 더하면 된다.)
#include<iostream>
#include <algorithm>
#include <numeric>
#include <vector>
#include <cmath>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T;
cin>>T;
for(test_case = 1; test_case <= T; ++test_case)
{
vector<int> vec(10, 0);
for(int i = 0; i < 10; i++){
cin >> vec[i];
}
sort(vec.begin(), vec.end());
double sum = accumulate(vec.begin() + 1, vec.end() - 1, 0);
double avg = sum / 8;
cout << "#" << test_case << " " << round(avg) << endl;
}
return 0;
}
728x90