알고리즘 문제풀이

백준 1546번 평균 C++/수학/브론즈1

yoogani 2023. 10. 26. 15:26

https://www.acmicpc.net/problem/1546

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

 

가장큰값을 찾아서 그 값에 맞게 값을 보정한다.

 

#include<iostream>

using namespace std;

int main()
{	
	float n,a, maxi = -2147000000;
	float score[1001], sum=0.0;

	cin >> n;
	
	for (int i = 0; i < n; i++) {
		cin >> a;
		score[i] = a;

		if (a > maxi) {
			maxi = a;
		}
	}
	
	for (int i = 0; i < n; i++) {
		
		score[i] = (score[i] / maxi) * 100;
		
		sum += float(score[i]);
	}
	
	cout.precision(6);
	cout << sum / float(n);

	return 0;
}

 

또는 계산을 한번에 다 하고 

한번에 값을 보정하는 방법도 있다.

#include<iostream>

using namespace std;

int main()
{
	
	float n,a, maxi = -2147000000;
	int idx = 0;
	float score[1001], sum=0.0;

	cin >> n;
	
	for (int i = 0; i < n; i++) {
		cin >> a;
		score[i] = a;

		if (a > maxi) maxi = a;

		sum += score[i];
		
	}
	
	
	sum = (sum / maxi * 100)/n;
	
	
	cout.precision(6);
	cout << sum;

	return 0;
}