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
'백준 알고리즘 단계별 풀이 (문제 수) > 1차원 배열 (7)' 카테고리의 다른 글
[C++] OX퀴즈 : 8958번 (0) | 2022.06.20 |
---|---|
[C++] 특정 공식으로 새로운 평균 구하기 : 1546번 (0) | 2022.06.18 |
[C++] 나머지 배열에서 서로 다른 값 찾기 : 3052번 (0) | 2022.06.18 |
[C++] 각 자릿수의 숫자 갯수 세기 : 2577번 (0) | 2022.06.18 |
[C++] 배열에서 최댓값 찾고 인덱스 구하기 : 2562번 (0) | 2022.06.18 |