본문 바로가기
Algorithm/Baekjoon

[백준/BOJ] 4344번 - 평균은 넘겠지 (C++)

by shine-jung 2021. 7. 6.
반응형

문제 링크

 

코딩하기 전 생각하기

/*
TC의 개수를 입력받고 그만큼 반복한다.
	학생들의 점수를 다 더하고 학생 수로 나눠서 평균값을 구한다.
	평균값을 넘는 학생 수를 count 하고 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
*/

 


 

코드

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
    
    int num;
    cin >> num;
    for ( int i = 0; i < num; i++ ) {
        int student_num;
        cin >> student_num;
        vector<int> score;
        int score_sum = 0, count = 0;
        double score_avg, rate;
        for ( int j = 0; j < student_num; j++ ) {
            int s;
            cin >> s;
            score.push_back(s);
            score_sum += s;
        }
        score_avg = (double)score_sum / student_num ;
        for ( int k = 0; k < student_num; k++ )
            if (score[k] > score_avg) count++;
        rate = (double)count / student_num;
        printf("%.3f%%\n", rate*100);
    }
}

 


 

느낀점

 

쉬운 문제이기는 했지만 변수 선언이 불필요하게 많이 들어간 것 같다. 변수 이름도 좀 줄이고 싶다. 피어리뷰를 할 때 선배님들한테 팁 좀 물어봐야겠다.

나눗셈을 할 때 몫만 나오는 것을 방지하기 위해서 int형 앞에 (double)을 붙이거나 1.0을 곱해주는 것을 유의하면 좋을 거 같다.

백준에서 9달전에 이 문제를 풀었던 기록이 있어서 신기했다.

 

(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.

댓글 환영합니다!

반응형

댓글