백준/백준 단계별 문제풀이

백준 4344번 (C++)

FDEE 2020. 8. 21. 17:07

www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 �

www.acmicpc.net

 

<답안>

#include <iostream>

using namespace std;

int main() {

    int c = 0, n = 0;

    int score[1000] = {0};

    int sum = 0;

    double average = 0;

    double result = 0;

    int count = 0;

    

    cin>>c;

    for(int i=0; i<c; i++)

    {

        cin>>n;

        for(int j=0; j<n; j++)

        {

            cin>>score[j];

            sum += score[j];

        }

        average = double(sum)/double(n);

        for(int j=0; j<n; j++)

        {

            if(score[j] > int(average))

                count++;

        }

        

        result = double(count)/double(n)*100;

        cout.setf(ios::fixed);

        cout.precision(3);

        cout<<result<<"%\n";

        

        sum = 0;

        count = 0;

    }

    

    return 0;

}

 

<설명>

학생수가 1000명 이하이므로 배열 score[1000]을 먼저 만든다

전체 케이스수 c를 입력받는다

for를 사용하여 c번 반복을 먼저 만든다

   학생수 n을 입력받는다

   인덱스 i=0부터 n-1까지 score[i]를 입력받아 저장한다

   동시에 sum 값을 누적하여 더한다

   입력 후 sum/n을 통해 평균값 average를 구한다

   인텍스 i=0부터 n-1까지 score[i]와 average를 비교한다

      만약 average보다 큰 경우 count 값을 증가시킨다

   최종 구해진 count 나누기 학생수(n) * 100으로 result를 계산한다

   초수점 3자리를 설정한 뒤 result를 출력한 뒤 개행한다

   sum과 count를 다시 0으로 초기화 한뒤에 다음번 학생수를 입력받는다

c번 진행후 종료된다

 

'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글

백준 4673번 (C++)  (0) 2020.08.21
백준 15596번 (C++)  (0) 2020.08.21
백준 8958번 (C++)  (0) 2020.08.21
백준 1546번 (C++)  (0) 2020.08.21
백준 3052번 (C++)  (0) 2020.08.21