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로 나오게 됩니다.
'프로그래밍 ( Programming ) > 백준 알고리즘 (BaekJoon Algorithm)' 카테고리의 다른 글
4673번 - 셀프 넘버 ( 백준 알고리즘 / C++ ) (0) | 2020.12.03 |
---|---|
15596번 - 정수 N개의 합 ( 백준 알고리즘 / C++ ) (0) | 2020.11.28 |
8958번 - OX퀴즈 ( 백준 알고리즘 / C++ ) (0) | 2020.11.26 |
1546번 - 평균 ( 백준 알고리즘 / C++ ) (0) | 2020.11.26 |
3052번 - 나머지 (백준 알고리즘/C++) (0) | 2020.11.25 |
댓글