
✔️ 이중 배열 동적할당 + 실수의 소수 자릿수 활용
테스트 케이스 C만큼의 배열을 생성, 각 학생 수 만큼의 배열을 담아 한번에 점수 입력
→ 동적할당 new 를 사용해 이중 배열 생성 후 점수를 입력받는다.
입력받은 점수 합을 평균내기 위해 학생 수를 담는 Case 배열을 별도 생성해 활용한다.
평균 값을 소수점 셋째자리까지 출력
→ 자릿수 출력 함수 std::setprecision()를 사용한다.
→ 출력 형식을 일정하게 하기 위해 std::fixed 로 실수를 고정소수점 형태로 변환했다.
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int C, N;
cin >> C;
// 테스트 케이스 배열 생성 및 점수 입력
int ** arr = new int * [C];
int * testCase = new int [C];
for (int i = 0; i < C; ++i) {
cin >> N;
arr[i] = new int [N];
testCase[i] = N;
for (int j = 0; j < N; ++j)
cin >> arr[i][j];
}
for (int i = 0; i < C; ++i) {
int sum = 0, cnt = 0;
float avg, ratio;
// 평균 계산
for (int j = 0; j < testCase[i]; ++j)
sum += arr[i][j];
avg = (float)sum / testCase[i];
// 평균 이상 학생 계산
for (int j = 0; j < testCase[i]; ++j) {
if (arr[i][j] > avg) cnt++;
}
ratio = (float)cnt / testCase[i] * 100.0;
// 고정 소수점 표기 + 소수점 아래 자릿수 지정
cout << fixed << setprecision(3);
cout << ratio << '%' << '\n';
delete[] arr[i];
}
delete[] arr;
}