프로그래밍/백준

2. 백준 4344 평균은 넘겠지(feat.%프린트 하는 방법) - c 언어

량아이 2022. 7. 15. 00:55

이미 백준의 단계별로 풀어보기중 1차원 배열 문제에서 두번의 패배를 맛본 나는 더이상 물러날 곳이 없었다.

 

마음을 다독이며 새로히 도전한 문제는 바로 4344 평균은 넘겠지

이 문제는 처음에

'케이스의 개수'를 던져준

다음 '학생의 수'를 주고

학생의 수 만큼 '점수'를 주어 평균을 내고 '평균 이상인 학생'을 퍼센트로 나타내는 문제이다.

 

그다지 어려운 문제도 아니고 문제가 반복 개수와 변수의 수도 알아낸 이상 바로 도전해보기로 했는데

우선 가장 기본적인 반복문을 한 케이스당 학생의 수 만큼 반복하는 식과 받은 점수를 합산하여 평균을 내는 식을 만들어 주었고 이상은 없었다.

평균 이상인 학생도 배열을 사용하여 cnt로 인원을 세주었고 cnt는 소수점 자리도 나타내야 하기 때문에 float로 변수 선언을 해주었다.

 

이후 한가지 고비가 있었으니 퍼센테이지를 어떻게 나타내느냐였는데 분명 학기중에는 알고있었던것이었으나 지금은 모르는 나는 결국 패배하였고 구글선생의 도움을 살짝 받아보기로 했다.

 

해결방법은 매우 간단했으니 %를 두번 사용하는 것이다 %%

나는 이것을 까먹고 \%로 뻘짓을 했다.

 

#include <stdio.h>
int main(){
    int num, su, i=0,hap, j;
    float cnt;
    scanf("%d",&num);
    while(i<num){ // 테스트 케이스 만큼 반복
        hap=0; //평균 초기화
        cnt=0; //평균이상 인원 초기화
        scanf("%d",&su); //학생수 받기
        int jum[su]; //변수 선언
        for(j=0;j<su;j++){
            scanf("%d",&jum[j]);//점수 받기
            hap+=jum[j];
        }
        hap/=su; //점수 평균 구하기
        for(j=0;j<su;j++){
            if(jum[j]>hap){ //평균 이상이면
                cnt++;
            }
        }
        cnt/=su;//인원 평균 구하기
        printf("%.3f%%\n",cnt*100);
        i++;
    }
}

문제 해결