문제
풀이
이 문제를 정리하면 다음과 같습니다.
1. 테스트 케이스의 수를 받습니다.
2. 테스트 케이스 별 학생의 수와 각 학생들의 점수를 입력 받습니다.
3. 입력받은 점수의 평균을 구합니다.
4. 입력받은 학생들의 점수와 평균 값을 비교한 후 평균을 넘는 학생이 몇명인지를 구합니다.
5. 입력받은 학생의 수 대비 평균을 넘는 학생의 수가 몇 퍼센트인지를 출력합니다.
6. 테스트 케이스의 수만큼 반복해 줍니다.
이 과정을 수행하기 위해 먼저 케이스 수를 입력받고, 입력받은 케이스의 수에서 학생의 수를 입력받고 그 수만큼 점수를 넣을 수 있는 배열을 생성해줍니다. 그 다음 점수를 입력 받으면서 더해주어 총점을 구해줍니다. 구해놓은 총점을 이용하여 평균값을 도출하고, 아까 점수를 입력받은 배열의 값과 평균값을 비교해주면서 평균을 넘으면 카운트 해주면 됩니다. 이 과정을 모두 마쳤으면 카운트 된 값과 학생의 수를 이용하여 퍼센트를 구해주고, 반복되는 동안 변수의 값을 계속해서 초기화 하는 방식으로 풀이를 진행해주면 됩니다. 아래 소스코드와 비교하면서 설명을 읽어주시면 이해하는데 조금 더 도움이 될 것 같습니다.
소스코드
#include <iostream>
using namespace std;
int main()
{
int c, n;
double count=0, total=0,avg;
cin >>c;
for (int i = 0; i < c; i++){
cin >> n;
total=0;
count=0;
double score[n];
for (int j = 0; j < n; j++)
{
cin >> score[j];
total+=score[j];
}
avg=total/(double)n;
for (int k = 0; k < n; k++)
{
if (score[k]>avg) count++;
}
cout << fixed;
cout.precision(3);
cout << (count/n)*100 <<'%' << '\n';
}
}
'Algorithm > Python, C++' 카테고리의 다른 글
백준 10818_최소, 최대[C++] (0) | 2022.01.19 |
---|---|
백준 8958_OX퀴즈[C++] (0) | 2022.01.18 |
백준 3052_나머지[C++] (0) | 2022.01.17 |
백준 2577_숫자의 개수[C++] (0) | 2022.01.17 |
백준 2562_최댓값[C++] (0) | 2022.01.17 |
댓글