입력 코드
#include <stdio.h>
main() {
int C, N;
scanf("%d", &C);
int i, j;
int arr[1000];
for (i = 0; i < C; i++) {
scanf("%d", &N);
int sum = 0;
for (j = 0; j < N; j++) {
scanf("%d", &arr[j]);
sum += arr[j];
}
double mean = (double)sum / N;
int count = 0;
for (j = 0; j < N; j++) {
if (arr[j] > mean)
count++;
}
printf("%.3f", (double)count / N * 100);
printf("%%\n");
}
}
코드 설명
반복문과 조건문, 배열, 초기화를 이용하는 문제
#include <stdio.h>
main() {
int C, N;
scanf("%d", &C);
int i, j;
int sum = 0, mean, count = 0;
int arr[1000];
for (i = 0; i < C; i++) {
scanf("%d", &N);
for (j = 0; j < N; j++) {
scanf("%d", &arr[j]);
}
for (j = 0; j < N; j++) {
sum += arr[j];
mean = sum / N;
if (arr[j] > mean)
++count;
}
printf("%lf", count / N * 100);
printf("%%\n");
}
}
퍼센트가 너무 높게 나와서 보니 반복문을 여러 개 쓰면서 중복으로 count 된 것 같았다. 그리고 출력할 때 형식지정자도 문제였다.
#include <stdio.h>
main() {
int C, N;
scanf("%d", &C);
int i, j;
int arr[1000];
for (i = 0; i < C; i++) {
scanf("%d", &N);
int sum = 0;
for (j = 0; j < N; j++) {
scanf("%d", &arr[j]);
sum += arr[j];
}
double mean = (double)sum / N;
int count = 0;
for (j = 0; j < N; j++) {
if (arr[j] > mean)
count++;
}
printf("%.3f", (double)count / N * 100);
printf("%%\n");
}
}
마지막에 헤매다가 반복문을 돌면서 sum이랑 count를 초기화해줘야 하는 걸 안해서 계속 값이 크게 나왔다.
↓↓↓ 참고한 사이트
[백준] 4344번 평균은 넘겠지 C/C++ 문제 풀이 1차원배열
문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각
aorica.tistory.com
[백준 4344] 평균은 넘겠지 :: C언어
문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각
raise-meow.tistory.com
문제 출처
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
'C' 카테고리의 다른 글
#28. [백준_C언어] 4673 : 셀프 넘버 (1) | 2021.01.13 |
---|---|
#27. [백준_C언어] 15596 : 정수 N개의 합 (0) | 2021.01.13 |
#25. [백준_C언어] 1546 : 평균 (0) | 2021.01.12 |
#24. [백준_C언어] 3052 : 나머지 (0) | 2021.01.11 |
#23. [백준_C언어] 2577 : 숫자의 개수 (0) | 2021.01.11 |