본문 바로가기
Online-Judge/Baekjoon

[Baekjoon] C++ 4344번 평균은 넘겠지

by eungbbang 2021. 6. 1.
반응형

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

테스트 케이스의 수 C를 입력 받아 반복해준다.

int C = 0;
cin >> C;

for (int i = 0; i < C; i++) {
	// 여기에 코드 작성
}

 

 

학생 N명의 점수를 받아 벡터에 저장한다.

이때 sum 변수에 total 점수를 누적한다.

int N = 0;
cin >> N;
vector<int> arr = {};

int sum = 0;
for (int j = 0; j < N; j++) {
	int n = 0;
	cin >> n;
	arr.push_back(n);
    
	sum = sum + arr[j];	//total
}

 

 

평균을 구한 뒤. 평균보다 점수가 높은 학생의 수를 센다.

int avg = sum / N;
int cnt = 0;

for (int j = 0; j < N; j++) {

	if (arr[j] > avg) {
		cnt++;
	}
}

 

 

비율을 소수 셋째 자리 수까지 구한다.

비율은 (점수가 평균보다 높은 학생 수) / (전체 학생 수) 이며,

cout << setpresicion() << fixed;

를 사용하여 소수 셋째 짜리까지 출력한다.

cout << setprecision(3) << fixed;
cout << (static_cast<double>(cnt) / N) * 100 << "%\n";

 

 

참고) 소수점 고정 출력

 

[C++] 고정 소수점 (소수점 자리 수 지정하여 출력)

고정 소수점이란 프로그래밍을 하다보면 소수점을 고정하여 출력하고 싶을 때가 있다. 가령, 100 / 3 의 값을 3.333333... 으로 무한하다. 하지만 숫자를 무한히 출력할 수는 없으므로 계산기는 자신

while1.tistory.com


 

[전체 코드]

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

int main() {

	int C = 0;
	cin >> C;

	for (int i = 0; i < C; i++) {

		int N = 0;
		cin >> N;
		vector<int> arr = {};

		int sum = 0;
		for (int j = 0; j < N; j++) {
			int n = 0;
			cin >> n;
			arr.push_back(n);
			sum = sum + arr[j];
		}

		int avg = sum / N;
		int cnt = 0;

		for (int j = 0; j < N; j++) {

			if (arr[j] > avg) {
				cnt++;
			}
		}
		cout << setprecision(3) << fixed;
		cout << (static_cast<double>(cnt) / N) * 100 << "%\n";
	}
}
반응형

댓글