코딩하는 덕구 🐶

37. C++ 백준 4344 번 평균은 넘겠지 본문

알고리즘 문제 풀이

37. C++ 백준 4344 번 평균은 넘겠지

코딩하는 덕구 🐶 2022. 1. 24. 15:03
728x90
반응형

안녕하세요! 코딩하는 덕구입니다!

문제

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

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

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

 

#include <iostream>
using namespace std;

int main() {
    int C,N;
    double cnt = 0, score[100000], ave = 0;
    cin>>C;
    for(int i = 0; i<C; i++){ //테스트 케이스 반복을 위한 for문
        cin>>N;
        for(int j = 0; j<N; j++){
            cin>>score[j];
            ave += score[j]; //ave = ave + score[j];
        }
        ave /= N;  // ave = ave/N;

        cout<<fixed;
        cout.precision(3);

        for(int j = 0 ;j<N; j++){
            if(score[j] > ave){
                cnt++;
            }
        }
        ave = cnt/N * 100; // 평균비율 = 평균이상 학생수 / 학생수 *100
        cout<<ave<<'%'<<endl; 
        cnt = 0; //테스트 케이스 반복을 위한 초기화
        ave = 0; //테스트 케이스 반복을 위한 초기화
    }

    return 0;
}

 

테스트 케이스를 담을 변수 C, 학생의 수를 담을 변수 N, 학생들의 점수를 넣을 배열 score,

평균 이상인 학생수를 담을 변수 cnt, 평균을 담을 변수 ave 를 선언했습니다!

 

첫번째 for 문을 이용해 테스트 케이스 만큼 알고리즘을 반복하게 끔 만들었고

두번째 for 문을 이용해 학생들의 점수를 저장함과 동시에 학생들의 점수를 다 더했습니다!

두번째 for 문이 끝나고 학생들의 점수의 합을 학생 수로 나눠 평균을 구했고,

세번째 for 문을 이용해 평균 이상인 학생 수를 구한다음!

평균을 넘는 학생 비율을 구해서 문제에서 요구하는 형식에 맞게 출력했습니다!

 

C++ 백준 4344 번 이었습니다! 감사합니다~!

728x90
반응형