알고리즘/백준

[C++] 백준 1546번 - 평균

Esunn 2022. 7. 25. 17:59

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

 

1546번: 평균

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

www.acmicpc.net

 

문제 설명

주어진 과목 개수 N이 주어지고 조건에 따라 새로운 평균 점수를 출력하는 문제이다.

주어진 점수 중에서 가장 높은 점수를 M이라 하고 

 

점수 / M * 100

 

이렇게 새로운 점수를 구해 이 점수로 평균을 구하는 문제이다.

 

 

#include <iostream>
using namespace std;

int main() {
	int n;
	int max = 0;
	float score[1000] = { 0, };
	float avr = 0;
	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> score[i];
		if (score[i] > max)	max = score[i];
	}
	for (int j = 0; j < n; j++) {
		score[j] = score[j] / max * 100;
		avr += score[j];
	}
	cout << avr / n;
}

 

입력받기

이 문제는 배열을 통해 풀어야 할 것 같아 과목 개수가 1000개보다 작다고 해서

배열로 풀만하다 생각해 실수형 배열을 만들었다.

 

계산을 하다 보면 실수로 값이 많이 나와 점수와 평균은 실수형 변수로 만들었다.

 

구현은 간단하게 과목수만큼 반복문을 돌리고 가장 높은 점수를 구했다.

 

 

새로운 평균 구하기

값을 받았으면 새로운 점수를 구하고 이에 맞는 평균을 구해준다.

 

 


 

사실문제가 무슨 말인지 몰라서 계산기로 직접 예제 입력을 구해봤다.

개인적으로 문제 이해에 시간을 오래 썼다. 

 

중간에 맞게 짰는데 오류가 나길래 뭔가 했더니 점수를 정수형 변수로 만들어서 그랬다.