백준/단계별

[C++] 백준 4344

loasd 2022. 12. 9. 02:01
반응형

백준 4344번 문제 평균은 넘겠지 문제이다.

 

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

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net


 < 문제 > 

 

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

문제를 정리하면 먼저 테스트케이스의 갯수 C를 입력한 후 학생의 수를 입력하고 학생의 수만큼 점수를 입력한다.

그리고 평균을 계산한 다음 이 평균을 넘는 점수가 전체의 몇퍼센트인지 확인하는 문제이다.

예제를 보면 첫번째줄 5 50 50 70 80 100을 보자

여기서 평균을 계산하면 (50 + 50 + 70 + 80 + 100) / 5 = 70이다.

그리고 학생중 70을 넘는 학생은 80, 100 2개이므로 2/5 = 40.000%인 것이다.

 

#include <iostream>
using namespace std;

int main() {

	int t, n, count, avg;
	int score[1000] = { 0, };
	double total_score;

	cin >> t;

	for (int i = 0; i < t; i++) {
		avg = 0;
		count = 0;
		cin >> n;

		for (int j = 0; j < n; j++) {
			cin >> score[j];
			avg += score[j];
		}
		avg = avg / n;

		for (int k = 0; k < n; k++) {
			if (score[k] > avg)
				count++;
		}
		total_score = (double)count / n * 100;

		cout << fixed;
		cout.precision(3);
		cout << total_score << "%" << endl;
	}

}

 

 

변수들을 먼저 설명하면 

 

t = 테스트케이스 갯수, n = 학생 수, score = 점수, avg = 평균, total_score = 평균을 넘은 학생의 비율

 

먼저 for문을 통해 학생들의 점수를 입력받고 입력받은 점수를 avg를 통해 총점을 계산한다.

그 다음 avg = avg / n 으로 평균값을 구한다.

 

그 다음 for문에서는 score가 평균을 넘은 경우에 count를 하여 평균을 넘은 학생의 수를 구한다.

그리고 total_score는 소숫점으로 계산해야 하므로 double을 사용하였고 (count / n) * 100으로 퍼센트를 구한다.

 

cout << fixed를 통해 소수점을 고정시켜주었다. 

cout.precision(3)은 소숫점 자리를 어디까지 구할지 정하는 것이기 때문에 문제에서 제시한 소수점 셋째자리까지 구하기 위해 3을 입력하였다.

반응형

'백준 > 단계별' 카테고리의 다른 글

[C++] 백준 1065  (1) 2022.12.09
[C++] 백준 4673  (2) 2022.12.09
[C++] 백준 8958  (0) 2022.12.09
[C++] 백준 3052  (0) 2022.12.09
[C++] 백준 5597  (0) 2022.12.09