학생들의 점수를 입력받아 평균을 넘는 학생들의 비율을 계산하는 문제이다.
먼저 변수부터 설정한다.
int t, n;
int stu[1000];
int count, sum;
double avg, result;
테스트 케이스의 수를 입력받을 t변수
테스트케이스 별로 학생들의 수를 입력받을 n변수
학생의 수가 최대 1000명이므로 각 학생들의 점수를 저장할 배열 stu[1000]
평균값을 넘는 학생 수를 세는 count변수
학생들의 총합을 저장할 sum변수
sum변수를 이용해 평균값을 저장할 avg변수
count변수를 이용해 비율(결과)을 계산하기 위한 result 변수
이렇게 총 7개의 변수가 사용되었다.
전체 코드를 보자
#include <stdio.h>
int main() {
int t, n;
int stu[1000];
int count, sum;
double avg, result;
scanf_s("%d", &t);
for (int i = 0; i < t; i++) {
count = 0;
sum = 0;
scanf_s("%d", &n);
for (int j = 0; j < n; j++) {
scanf_s("%d", &stu[j]);
sum += stu[j];
}
avg = (double)sum / n;
for (int j = 0; j < n; j++) {
if (stu[j] > avg) {
count++;
}
}
result = (double)count / n * 100;
printf("%.3lf%%\n", result);
}
}
테스트케이스 t 값을 입력받으면 for문을 이용하여 t번만큼 반복하면서 학생들의 점수를 입력받는다.
이때 sum변수와 count 변수는 각 for문이 반복될때마다 값이 계속 쌓이는 것을 방지하기 위해 0으로 초기화 해준다.
n 변수에 학생들의 수를 입력받고 나면 다시 for문을 이용하여 각 학생들의 점수를 입력받아 stu[]배열에 차례대로 넣는다.
입력받은 값을 차례대로 sum 변수에 더해준다.
for문이 끝나면 avg 변수에 sum값을 학생수(n)으로 나누어 저장해준다.
그리고 다시 for문을 이용하여 각 학생들(stu[n])의 점수가 avg보다 높은지 아닌지 판단하고 높다면 count를 증가시킨다.
마지막으로 result 변수에 count (평균을 넘긴 학생 수) / n (전체 학생 수) * 100(백분위) 값을 저장해주면 된다.
이때 출력을 보면 40.000% 처럼 끝에 퍼센트 기호(%) 가 들어가야하는데 퍼센트 기호는 두번 중복해서 사용해주어야 제대로 출력된다.
'C > 백준알고리즘' 카테고리의 다른 글
[C] 백준알고리즘 #1065 한수 (0) | 2021.01.28 |
---|---|
[C] 백준알고리즘 #15596 정수 N개의 합 (0) | 2021.01.28 |
[C] 백준알고리즘 #8958 OX퀴즈 (0) | 2021.01.21 |
[C] 백준알고리즘 #1546 평균 (0) | 2021.01.20 |
[C] 백준알고리즘 #3052 나머지 (0) | 2021.01.20 |