문제 출처: www.acmicpc.net/problem/4344
1. 코드
#include <stdio.h>
int main(void)
{
int arr[10000], n1, n2, i, j; //n1 = 첫번째 입력, n2 = 두번째 입력
int sum, cnt; //sum = 총합, cnt = 평균을 넘은 학생 수
double avg, result; //avg = 평균, result = 최종 결과
scanf("%d", &n1);
for(i=0; i<n1; i++)
{
sum=0, cnt=0;
scanf("%d", &n2);
for(j=0; j<n2; j++) //학생들 점수 입력
{
scanf("%d", &arr[j]);
sum+=arr[j]; //학생들 점수 총합
}
avg=(double)sum/n2; //학생들 점수 평균
for(j=0; j<n2; j++) //평균 넘은 학생 수 확인
{
if(arr[j]>avg)
cnt++;
}
result=(double)cnt/n2*100; //최종 결과
printf("%.3f%\n", result); //%.3f는 소수점 셋째 자리까지 표시함
}
return 0;
}
2. 느낀 점
첫 번째로 소수점 셋째 자리까지 출력해야 하기 때문에 출력 형식에서 소수점을 표시하는 아는 것이 좋다 (ex %.3f으로 하면 1.333333이었던 것이 1.333으로 표시)
두 번째로는 형식 지정자를 알면 좋을 것 같다. 형식 지정자는 간단하게 말하면 int형을 double형으로 바꾸거나 double형을 int형으로 바꿀 수 있다. (result = (double)cnt/n2*100; 에서 (double)이 형식 지정자에 해당하는데 이 형식 지정자는 double형이라는 자료형으로 변환하고 result라는 변수에 저장한다는 의미이다.)
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 11720번: 숫자의 합 [Java] (0) | 2019.12.22 |
---|---|
백준 알고리즘 1065번: 한수 C언어 (0) | 2019.12.20 |
백준 알고리즘 4673번: 셀프 넘버 C언어(개선) (0) | 2019.12.11 |
백준 알고리즘 4673번: 셀프 넘버 C언어 (0) | 2019.12.09 |
백준 알고리즘 8958번: OX퀴즈 C언어 (0) | 2019.12.07 |