본문 바로가기

Algorithm (알고리즘)/백준 문제

백준 4344번: 평균은 넘겠지 (C++)



1.문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.


2.입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

3.출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.



소스코드

#include<iostream>
#include<math.h>

using namespace std;

int main()
{
	int stdNum; //학생수
	int sum; //합계
	int stdCnt; //평균학생 수

	double average; // 소수점 3자리 평균
	double stdRatio; //학생 비율

	while (1) //반복
	{
		sum = 0;
		stdCnt = 0;

		cin >> stdNum;
		if (stdNum == 0)
		{
			break; // 0명일 경우 while 탈출
		}

		int *score = new int[stdNum]; //메모리 동적할당
		if (!score)// 메모리 할당 실패시
		{
			return 0; 
		}

		for (int i = 0; i < stdNum; i++) // 값입력
		{
			cin >> score[i];
			sum += score[i];
		}

		average = (double)sum / stdNum; // 평균 구하기
		
		for (int i = 0; i < stdNum; i++)
		{
			if (average < score[i]) // 학생점수가 평균보다 클떄 경우
				stdCnt++;
		}
		stdRatio = ((double)stdCnt / stdNum)*100; // 백분율 구하기
		
		cout.precision(3); // 소수 셋쨰짜리까지 출력 함수
		cout << fixed << stdRatio << "%"<< endl; // 최종 출력부분

	}
	

	return 0;
}


실행 결과


출처-    https://www.acmicpc.net/problem/4344