728x90
728x90
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
예제 입력 1
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
예제 출력 1
40.000%
57.143%
33.333%
66.667%
55.556%
출처
Contest > Waterloo's local Programming Contests > 28 September, 2002 D번
- 문제를 번역한 사람: busyhuman
- 문제의 오타를 찾은 사람: choiking10, eric00513
- 어색한 표현을 찾은 사람: djm03178
알고리즘 분류
- 수학
- 사칙연산
문제 출처
https://www.acmicpc.net/problem/4344
문제 해결 방법
- 문제의 조건만 잘 파악하면 쉽게 해결할 수 있는 문제였다.
- 우선 테스트 케이스의 개수(C)의 값을 입력 받는다.
- 그리고 for 문을 이용하여 C번의 반복이 수행되도록 한 후, 학생의 수인 N의 값을 입력 받는다.
- 그리고 또 다른 for 문을 이용하여 N의 개수 만큼의 성적을 받고, 이를 토대로 평균값(avg)을 구한다.
- 또 다른 for 문을 이용하여 학생들의 성적이 포함되어 있는 N 크기의 배열을 순회하면서, 평균값(avg) 보다 큰 수의 개수(count)를 파악한 후, 또 다른 평균값을 구한다.
- 이 때, 소수점 셋째 자리까지 출력하라는 문제의 조건을 만족시키기도록 한다.
- cout << fixed; cout.precision(3);
- 또한, 평균값이 부동 소수점 형으로 표현되도록, int 형으로 선언한 count 변수의 자료형을 명시적 형변환을 이용하여 double 형으로 바꾼다.
- (double)count
- 이 때, 소수점 셋째 자리까지 출력하라는 문제의 조건을 만족시키기도록 한다.
- 이러한 과정이 C번 반복되도록 한다.
코드
#include <iostream>
using namespace std;
#define S 1000
int main() {
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int C, N, count;
double sum, avg, score[S];
cin >> C;
for (int i = 0; i < C; i++) {
cin >> N;
count = 0;
sum = 0;
for (int j = 0; j < N; j++) {
cin >> score[j];
sum += score[j];
}
avg = sum / N;
for (int k = 0; k < N; k++) {
if (score[k] > avg) {
count++;
}
}
avg = (double)count / N; // from integer to double
cout << fixed;
cout.precision(3); // Fix Precision
cout << avg * 100 << "%" << '\n';
}
return 0;
}
채점 결과
참고
- [단계별로 풀어보기] > [1차원 배열]
소수점 이하 자릿수 개수 조절하기
- 다음과 같이 cout 으로 출력할 때, 원하는 만큼 소숫점 이하의 수가 출력되도록 할 수 있다.
cout << fixed;
cout.precision(number);
728x90
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ-11654][C++] 아스키 코드 (0) | 2022.07.11 |
---|---|
[BOJ-1065][C++] 한수 (0) | 2022.07.11 |
[BOJ-4673][C++] 셀프 넘버 (0) | 2022.07.11 |
[BOJ-15596][C++] 정수 N개의 합 (0) | 2022.07.11 |
[BOJ-8959][C++] OX퀴즈 (0) | 2022.07.10 |
[BOJ-1546][C++] 평균 (0) | 2022.07.10 |
[BOJ-3052][C++] 나머지 (0) | 2022.07.10 |
[BOJ-2577][C++] 숫자의 개수 (0) | 2022.07.10 |