Baekjoon

1546 평균

kjy0349 2018. 11. 15. 23:29


Backjoon 1546번 평균





전체 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
#include<malloc.h>
int main(){
    short N,i,j,k; // N은 받을 성적의 갯수(배열에 입력되는 자료의 갯수) i,j,k는 증가값
    float result; // 성적을 처리한 후 평균을 구하기위해 합의 값을 저장할 변수
    short testscore=0// 각 성적을 배열에 넣을 때 임시로 값을 저장하는 변수
    scanf("%hd",&N); 
    short *test = (short *)malloc(sizeof(short)*N);
    for(i=0;i<N;i++){
        scanf("%hd",&testscore);
        *(test+i)=testscore;
    }
    short max=*(test+0); //최댓값을 구한 후 저장 할 변수
    for(j=0;j<N;j++){
        if(max<=*(test+j)){
            max=*(test+j);
        }
    }
    for(k=0;k<N;k++){
        result+=(float)test[k]/max*100;
    }
    printf("%f",result/N);
    free(test);
    return 0;
}
cs




1
2
3
4
5
6
    scanf("%hd",&N); 
    short *test = (short *)malloc(sizeof(short)*N);
    for(i=0;i<N;i++){
        scanf("%hd",&testscore);
        *(test+i)=testscore;

cs



short형 데이터를 1개 입력받은 후에 변수 N에 저장하고, 입력받은 성적데이터들을저장해줄 test 배열을 동적할당해줍니다.

(포인터를 배열처럼 사용)


그 후 입력받은 short형 데이터 N개를 반복문을 통해 배열에 각 각 저장해줍니다.





1
2
3
4
5
6
7
8
9
10
11
12
    short max=*(test+0); //최댓값을 구한 후 저장 할 변수
    for(j=0;j<N;j++){
        if(max<=*(test+j)){
            max=*(test+j);
        }
    }
    for(k=0;k<N;k++){
        result+=(float)test[k]/max*100;
    }
    printf("%f",result/N);
    free(test);
    return 0;
cs


최댓값을 구한 후 저장해줄 변수 max를 short형으로 선언해준 후, 반복문을 통해 최댓값을 찾아냅니다.


test배열의 첫번째값을 max변수에 넣어준 후, 배열의 각 항목을 첫번째값과 비교해 더 큰 데이터를 max에 다시 저장합니다.


문제에 주어진대로 각 성적값을 처리해주고나서 result변수에 각 성적값을 더해 처리된 성적들의 합을 구합니다.


마지막으로 printf으로 float형으로 출력해줍니다.(출력하는과정에서 평균을 구함)