<답안>
#include <iostream>
using namespace std;
int main() {
int c = 0, n = 0;
int score[1000] = {0};
int sum = 0;
double average = 0;
double result = 0;
int count = 0;
cin>>c;
for(int i=0; i<c; i++)
{
cin>>n;
for(int j=0; j<n; j++)
{
cin>>score[j];
sum += score[j];
}
average = double(sum)/double(n);
for(int j=0; j<n; j++)
{
if(score[j] > int(average))
count++;
}
result = double(count)/double(n)*100;
cout.setf(ios::fixed);
cout.precision(3);
cout<<result<<"%\n";
sum = 0;
count = 0;
}
return 0;
}
<설명>
학생수가 1000명 이하이므로 배열 score[1000]을 먼저 만든다
전체 케이스수 c를 입력받는다
for를 사용하여 c번 반복을 먼저 만든다
학생수 n을 입력받는다
인덱스 i=0부터 n-1까지 score[i]를 입력받아 저장한다
동시에 sum 값을 누적하여 더한다
입력 후 sum/n을 통해 평균값 average를 구한다
인텍스 i=0부터 n-1까지 score[i]와 average를 비교한다
만약 average보다 큰 경우 count 값을 증가시킨다
최종 구해진 count 나누기 학생수(n) * 100으로 result를 계산한다
초수점 3자리를 설정한 뒤 result를 출력한 뒤 개행한다
sum과 count를 다시 0으로 초기화 한뒤에 다음번 학생수를 입력받는다
c번 진행후 종료된다
'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글
백준 4673번 (C++) (0) | 2020.08.21 |
---|---|
백준 15596번 (C++) (0) | 2020.08.21 |
백준 8958번 (C++) (0) | 2020.08.21 |
백준 1546번 (C++) (0) | 2020.08.21 |
백준 3052번 (C++) (0) | 2020.08.21 |