"대학생 새내기 90%는 자신이 반에서 평균은 넘는다고 생각한다."로 시작하는 슬픈 문제
테스트케이스 사이즈에 맞게 배열을 생성해서
학생들의 점수를 입력받고, 평균을 넘는 케이스의 비율을 계산해주면 된다.
제출했을 때 컴파일에러가 발생했는데,
이건 int로 계산해주어야 하는 배열의 크기 변수를 double로 정의해서 생긴 문제였다.
double* a = new double[array_size] 이 부분에서 array_size 변수가 double이라 컴파일 에러가 난 것.
참고. 프로그래밍 오류의 종류 - 컴파일 에러/런타임 에러/링킹 에러/논리 에러/파스 에러 (tistory.com)
그리고 C++ 소수점은 precision 함수를 이용해서 나타낸다.
다음 사이트 참고.
[C++ 소수자리수 다루기] precision & fixed (velog.io)
#include <iostream>
int main() {
int c;
std::cin >> c;
double* mean = new double[c];
for (int i = 0; i < c; i++) {
mean[i] = 0;
}
int tmp_size;
double tmp_sum, tmp_val, tmp_mean;
for (int i = 0; i < c; i++) {
std::cin >> tmp_size;
tmp_sum = 0; tmp_mean = 0;
double* tmp_case = new double[tmp_size];
for (int j = 0; j < tmp_size; j++) {
tmp_case[j] = 0;
}
for (int j = 0; j < tmp_size; j++) {
std::cin >> tmp_val;
tmp_sum += tmp_val;
tmp_case[j] = tmp_val;
}
tmp_mean = tmp_sum / tmp_size;
for (int j = 0; j < tmp_size; j++) {
if (tmp_case[j] > tmp_mean) {
mean[i] += 1;
}
}
mean[i] = mean[i] / tmp_size * 100;
}
std::cout.precision(3);
std::cout << std::fixed;
for (int i = 0; i < c; i++) {
std::cout << mean[i] << "%" << std::endl;
}
return 0;
}
'Computer Science > C++' 카테고리의 다른 글
백준 C++ | #11 BOJ1966 프린터 큐 C++ 문제 풀이 (0) | 2022.08.10 |
---|---|
백준 C++ | #10 BOJ10773 제로 C++ 문제 풀이 (0) | 2022.08.09 |
백준 C++ | #8 BOJ3048 개미 C++ 문제 풀이 (0) | 2022.08.06 |
백준 C++ | #7 BOJ1018 체스판 다시 칠하기 C++ 문제 풀이 (0) | 2022.08.05 |
백준 C++ | #6 BOJ11508 2+1 세일 C++ 풀이 (0) | 2022.07.28 |