Baekjoon

[백준 C++] 4344번 - 평균은 넘겠지

yujin0517 2022. 2. 17. 15:13

4344번 - 평균은 넘겠지

 

<코드 작성>

  1. 테스트 케이스 수와 학생 수를 입력받고 for문을 사용하여 학생 점수 입력받기
  2. vector를 사용하여 학생 수만큼 각각의 점수 입력받기
  3. 평균을 구해서 평균을 넘는 학생 수를 확인
  4. 평균을 넘는 학생 수를 전체 학생 수로 나눠 비율 확인
  5. 평균을 넘는 학생 수의 비율을 소수점 셋째 자리까지 출력

 

4344번 문제

 

#include <iostream>
#include <vector>
using namespace std;

int main() {
	int C;  //테스트 케이스 수
	cin >> C;

	int num, sum = 0, avg, cnt = 0;
	for (int i = 0; i < C; i++) {
		cin >> num;  //학생 수
		vector<int> v(num);

		for (int j = 0; j < num; j++) {
			cin >> v[j];  //점수
			sum += v[j];  //점수 총 합
		}
		avg = sum / num;  //평균

		for (int j = 0; j < num; j++) {
			if (avg < v[j]) cnt++;  //평균을 넘는 학생 수
		}

		cout << fixed;
		cout.precision(3);  //소수점 아래 셋째 자리까지 출력
		cout << ((double)cnt / num) * 100 << "%" << endl;

		sum = 0, avg = 0, cnt = 0;  //다음 케이스 평균과 평균을 넘는 학생 수를 구하기 위해 초기화
	}
}

 

 

입력받는 학생 수가 일정하지 않아 vector를 사용하여 학생 수를 입력받을 때마다 vector를 선언하여 각각의 점수를 입력받았습니다.

그다음 입력받은 점수로 평균을 구하여 평균을 넘는 학생 수를 확인하였습니다. 

평균을 넘는 학생 수의 비율을 소수점 아래 셋째 자리까리 출력하기 위해 cout << fixed와 cout.precision(3)을 사용하였습니다. 

cout << fixed 없이 cout.precision(3)만 사용할 경우 소수점 아래 셋째 자리까지 출력되지 않고, 소수점 왼쪽 수까지 포함된 세 자릿수를 출력하게 됩니다. 

//ex) 57.143 출력
cout << fixed;
cout.precision(3);

//==> 57.143 출력됨.
cout.precision(3);

//==> 57.1 출력됨.

 

감사합니다.

2022.02.17