입력 코드
#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를 초기화해줘야 하는 걸 안해서 계속 값이 크게 나왔다.
↓↓↓ 참고한 사이트
문제 출처
'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 |