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