본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[백준 알고리즘/ C++] BOJ.4344 : 평균은 넘겠지

by 코코의 주인 2022. 1. 16.

풀이

자료구조

 - int input_num : 테스트 케이스의 수

 - int student_num : 학생 수

 - int student[] : 학생 점수를 저장할 배열

 - int count : 평균 이상인 학생들을 세기 위한 변수

 - float mean : 학급 평균

 - int sum : 학급 학생들의 점수 총합

 

알고리즘

- 사칙 연산을 통한 구현 문제

 

코드

-  cout 형식으로 소수 점 제한해서 출력하는 법

cout << fixed;
cout.precision('원하는 소수점 자리');

코드 

#include <iostream>

using namespace std;

int main() {

    int input_num = 0;
    int student_num = 0;
    int student[1001] = {0};
    int count = 0;
    int sum = 0;
    float mean = 0;

    cin >> input_num;

    for(int i = 0; i < input_num; i++) {  //테스트 케이스 수대로 반복
        cin >> student_num;
        for(int j = 0; j <student_num; j++) {  //학생 수대로 반복
            cin >> student[j];
            sum += student[j];  // 학급 점수 합계
        }
        mean = (float)sum / (float)student_num;  //학급 평균 구하기

        for(int j = 0; j < student_num; j ++) {
            if((float)student[j] > mean) {  // 평균보다 점수가 높은 학생이 있다면
                count ++;  // count 증가
            }
        }

        //출력 형식 소수점 세자리 출력 위함
        cout<<fixed;
        cout.precision(3);

        cout << (((float)count / (float)student_num) * 100) << "% \n";
        sum = 0;
        mean = 0;
        count = 0;
    }
    return 0;
}

 


총평

이 문제 풀면서 멘탈이 갈렸다. 이유 없이 계속 for문에서 튕겨져 나와서 디버깅을 해도 이유를 알 수 없었기 때문이다.

수정을 포기하고 그냥 백준에 내니까 통과됐다...

온라인 컴파일러로 돌려보니까 또 잘 돌아간다.

맥북이 문제인가보다..

댓글