본문 바로가기
프로그래밍 ( Programming )/백준 알고리즘 (BaekJoon Algorithm)

4344번 - 평균은 넘겠지 ( 백준 알고리즘 / C++ )

by Jayce_choi 2020. 11. 27.
반응형
 

4344번: 평균은 넘겠지

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

www.acmicpc.net

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

입력 : 첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

        둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고,
        이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력 : 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

 

 


#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int C, N; 
	int score[1000] = { 0, };
	double count = 0;
	double avg = 0;

	cin >> C;
	for (int i = 0; i < C;i++)
	{
		cin >> N;
		for (int j = 0;j < N;j++)
		{
			cin >> score[j];
			avg = avg + score[j];
		}
		avg = avg / N;
		for (int k = 0;k < N;k++)
		{
			if (avg < score[k])
			{
				count = count + 1;
			}
		}
		cout << fixed;
		cout.precision(3);
		//printf("%.3f%", round(count / N * 100 * 1000) / 1000);
		cout << count / N * 100 * 1000 / 1000 << "%" << "\n";
		avg = 0;
		count = 0;
	}

	return 0; 
}

중요 포인트
 - 평균을 계산 후 평균 점수보다 넘는 사람들 추리는 반복문 수행 
 - 소수점 네번째 자리에서 반올림하여 소수점 3번째 자리까지 출력하는 방법

소수점 4번째 자리에서 반올림을 수행하여 3번째 자리까지 출력을 위해서는 2가지 방법이 있습니다.

1. C 일때
 * 주석 친 코드를 참고 부탁드립니다. 
 //printf("%. 3f%", round(count / N * 100 * 1000) / 1000);    
 . 3f는 소수점 3번째까지 표현하도록 하며 round함수는 소수점 첫 번째 자리에서 반올림하는 함수입니다.
 
 round 함수 내부를 보면 
 ( count / N ) -> 평균을 넘는 사람 수 / 전체 사람 수    ex) 0.3333333
 ( count / N ) * 100 -> 평균을 넘는 사람의 퍼센티지 ex) 33.333333
 ( count / N ) * 100 * 1000 -> round 함수를 사용하여 소수점 3번째 자리까지 표현하기 위함  ex) 33333.3333
 round(count / N * 100 * 1000) ->
소수점 첫 번째 자리에서 반올림 수행 ex) 33333
 round(count / N * 100 * 1000) / 1000 -> 33.333 완성!


2. C ++ 일 때
 cout << fixed;
 cout.precision(3);

 우선 cout.precision(숫자)는 출력 시 총 몇 자리를 출력할 것인가를 설정하는 구문입니다.
 예를 들어 A = 10.16745 일 때 cout.precision(3)을 하면 
 10.2가 출력되게 됩니다.

 여기서 cout << fixed 구문만 추가해주면 cout.precision(3)의 3이 소수점 위치를 나타내는 숫자로 바뀌게 됩니다.
 즉 A = 10.16745일 때 출력이 10.167로 나오게 됩니다.

반응형

댓글