본문 바로가기
백준 알고리즘 단계별 풀이 (문제 수)/1차원 배열 (7)

[C++] 평균은 넘겠지 : 4344번

by 17번 일개미 2022. 6. 20.
728x90

문제

 

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

 

출력

 

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


예제 입력

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

예제 출력

40.000%
57.143%
33.333%
66.667%
55.556%

풀이

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
	int max; // 최대 갯수
	int student; // 학생 수
	int* score; // 점수 배열
	double average = 0; // 평균
	int sum = 0; // 점수 합
	int count = 0; // 평균 넘는 학생 수

	cin >> max; // 최대 갯수 입력
	cin.ignore();

	for (int i = 0; i < max; i++) // max 만큼 반복
	{
		cin >> student; // 학생 수 입력
		score = new int[student]; // 학생 수만큼 점수 배열 할당

		for (int i = 0; i < student; i++)
		{
			cin >> score[i]; // 점수를 받고
			sum += score[i]; // 더하기
		}
		average = (double)sum / student; // 평균 계산
		sum = 0; // sum 초기화
		for (int i = 0; i < student; i++) // 평균 이상 몇 명인지?
		{
			if (score[i] > average)
			{
				count++; // 숫자 세기
			}
		}
		cout.setf(ios::showpoint); // 0 생략 안하고 표시
		cout << fixed; // 소수점 이하 고정할 건데 몇 째까진지는 다음 줄에
		cout.precision(3);  // 셋 째자리까지 고정
		cout << (double)count / student * 100 << "%\n"; // 비율 출력
        	count = 0; // 숫자 센 거 초기화
		delete[] score; // 메모리 해제
	}
}

1. 최대 케이스 수 받고

2. 학생 수 받고

3. 점수 받고

4. 평균 구하고

5. 비율 구하고

6. 소수점 출력 형식 정하고

7. 출력

 

어렵지 않은 문제였다.

728x90