C/백준알고리즘

[C] 백준알고리즘 #4344 평균은 넘겠지

Sehyeok20 2021. 1. 21. 16:49
반응형

백준알고리즘 #4344 평균은 넘겠지 문제

학생들의 점수를 입력받아 평균을 넘는 학생들의 비율을 계산하는 문제이다.

 

먼저 변수부터 설정한다.

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% 처럼 끝에 퍼센트 기호(%) 가 들어가야하는데 퍼센트 기호는 두번 중복해서 사용해주어야 제대로 출력된다.

 

 

 

 

반응형