출처 : 반크_세계유산 경복궁
문제]
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.
예제 입력 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%
출처 : 백준_4344번
참고풀이]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> //malloc(), free() : 동적메모리 설정 및 해제함수
int main()
{
int i,j;//인덱스 또는 반복변수
int N;//학생의 수 입력변수
int Sum;//학생들의 점수합을 구한다.
int cnt;//평균을 넘는 학생들 변수
double Avg;//평균을 구한다.
double P;//비율을 구한다.
//테스트 케이스의 수를 입력받는다.
int C;
scanf("%d%*c", &C); //%*c:EnterKey
for (i = 1; i <= C; i++)
{
//학생의 수를 입력받는다.
scanf("%d%*c", &N);
if (N >= 1 && N <= 1000)
{
//N명을 동적메모리 설정하고 점수를 입력받는다.
int* M = (int*)malloc(sizeof(int) * N);
for (j = 0; j < N; j++)
{
scanf("%d%*c", &M[j]);
if (M[j] >= 0 && M[j] <= 100) continue;
else return 0;
}
//학생들의 점수를 합하여 평균을 구한다.
Sum = 0;
for (j = 0; j < N; j++)
Sum += M[j];
Avg = (double)Sum / (double)N;
//평균을 넘는 학생들의 수를 구하고 비율을 구한다.
cnt = 0;
for (j = 0; j < N; j++)
if(Avg<(double)M[j]) cnt++;
P = (double)cnt /(double)N;
//입력한 자료를 출력한다.
printf("%.3lf%%\n", P*100);
//동적메모리를 해제한다.
free(M);
}
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 겨울
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 193제] 조건에 맞는 암호를 만드시오. (0) | 2024.11.29 |
---|---|
C언어 192제] 평범한 배낭 (0) | 2024.11.28 |
C언어 190제] 2011년 한국정보올림피아드 시․도지역본선 초등부 2번, 고등부 1번 나는 학급회장이다. (0) | 2024.11.25 |
C언어 189제] 2010/2011 COCI 크로아티아 정보학 공개 경쟁 #2 1번 달팽이는 올라가고 싶다. (0) | 2024.11.25 |
C언어 188제] NCP Nextop Lv.2 피보나치 수(Fibonacci numbers) 2 (0) | 2024.11.21 |
댓글