본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 4344번: 평균은 넘겠지 C언어

문제 출처: www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

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라는 변수에 저장한다는 의미이다.)