문제는 다음과 같다.
여기서 가장 중요한 포인트는 입력값을 받는데, 이 입력값의 개수는 정해져 있지 않다. 또한 입력받은 값 중에서 최대값을 걸러서 저장할 수 있어야 하는 것이다.
먼저 입력값을 개수 제한없이 받는 것은 for 문과 동적 배열을 활용한다
for 문을 통해 배열에 값을 할당하면 그 즉시 미리 선언해 둔 변수 max = 0과 크기를 비교하여 max의 값을 반복문이 한 번 돌 때마다 최신화 시켜준다.
그리고 result 변수에 입력 받은 값을 누적으로 더해나간다.
그 result 값을 최종으로 결정된 max 로 나누고 100을 곱하면 우리가 원하는 값을 얻는다. 그리고 number 로 나누면 평균을 쉽게 구할 수 있다.
이번 문제에서 얻을 만한 내용은 입력값을 여러개 받을 때 for문과 배열의 조합이다.
꿀팁은 문제를 직접 손으로 써나가면서 식을 더 간결하게 할 방안도 찾는 것이 도움이 될 것이다.
#include <iostream>
using namespace std;
int main()
{
int number;
int score[1000] = {};
int max = 0;
double result = 0;
cin >> number;
for(int i = 0; i < number; i++)
{
cin >> score[i];
if(score[i] > max)
{
max = score[i];
}
result += score[i];
}
result = (result / max * 100) / number;
cout << fixed;
cout.precision(6);
cout << result << endl;
}