티스토리 뷰

이번 포스팅은 백준 알고리즘 사이트의 1546번 평균 문제를 C 언어로 코딩해보도록 하겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다.

 

https://www.acmicpc.net/problem/1546

 

이번 포스팅은 지난 포스팅과 같은 단계로 if문 사용해보기 단계입니다.

 

이 문제의 경우 입력 받을 과목 수 N과 N개만큼의 점수를 입력 받고, 가장 높은 점수 M을 지정해 모든 점수를 M*100으로 나누어 이 문제에서 원하는 평균을 구해 출력하는 문제입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
void main() {
    int num, i;
    double inArr[1000], max = 0, avg = 0;
    scanf("%d"&num);
    for (i = 0; i < num; i++){
        scanf("%lf"&inArr[i]);
        
        if (max < inArr[i])
            max = inArr[i];        
    }
    
    for (i = 0; i < num; i++){
        inArr[i] = inArr[i]/max*100.0;
        avg += inArr[i];
    }
    
    printf("%.2lf", (avg/(double)num));
}

 

먼저 받을 과목의 수를 지정하는 num변수와 가장 높은 점수를 전달 받을 변수 max, 최종 평균값을 넣을 avg변수를 지정해줍니다.

 

num만큼의 점수를 입력받기 위해 inArr 배열을 만들어주는데, 크기는 문제에서 지정해준 1000까지로 만들어줍니다.

(해당 배열 값을 1000보다 더 많이 할당할 경우 런타임에러가 발생하기에 문제 조건을 충족해주시는 것이 중요합니다. 또한 이 문제에서 나오는 결과값이 double형이기에 inArr를 포함한 max와 avg 변수 모두 double형으로 지정해주시는 것이 좋습니다.)

 

for문을 num값까지 반복하여 inArr에 과목 점수를 하나씩 넣어주고, 해당 inArr에서 가장 큰 값을 max변수에 전달하여 줍니다.

 

이후 다시 for문을 num값까지 반복하여 모든 과목의 점수를 원래점수/max*100 로 만들어 준 후 avg에는 변경된 점수의 합을 넣어줍니다.

 

최종적으로 avg/(double)num 값을 출력해주어 결과를 보여주게 됩니다.

(avg와 출력하고자 하는 값이 double형이기에 int형인 num에 (double)을 붙여 강제 형변환 시켜줍니다.)

 

 

다음 포스팅에서는 다음 단계의 코드를 보도록 하겠습니다.

 

다음 포스팅에서 봐요 :)

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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 26 27
28 29 30
글 보관함