백준 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 |