BOJ-4344 | 평균은 넘겠지 c++

·2024년 8월 31일

Algorithm (2024)

목록 보기
1/10
post-thumbnail

✏️ 4344 - 평균은 넘겠지
🌊 GitHub @xaesu, Study-Algorithm


접근

✔️ 이중 배열 동적할당 + 실수의 소수 자릿수 활용

  1. 테스트 케이스 C만큼의 배열을 생성, 각 학생 수 만큼의 배열을 담아 한번에 점수 입력
    → 동적할당 new 를 사용해 이중 배열 생성 후 점수를 입력받는다.

  2. 입력받은 점수 합을 평균내기 위해 학생 수를 담는 Case 배열을 별도 생성해 활용한다.

  3. 평균 값을 소수점 셋째자리까지 출력
    → 자릿수 출력 함수 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;
}
profile
🌦️ @xaesu

0개의 댓글