백준 C, C++ 문제(소스코드만)
1546번, 평균
swchung09
2025. 4. 8. 00:22
https://www.acmicpc.net/problem/1546
이 문제는 입력받은 점수중 최댓값은 산출하고, 다른 점수를 원점수/최댓값*100으로 변환한 후 평균을 구하는 문제이다. 이른 통해 최고점이 70이고 다른 한 과목이 50점이면, 그 과목은 71.43점이 된다.
우선 기본 라이브러리를 불러온다.
#include <stdio.h>
그 다음 과목의 수를 입력받는다.
int n;
scanf("%d", &n);
이제 for문에서 과목을 배열 형태로 입력 받고, 삼항 연산자로 최댓값을 산출한다.
int arr[100];
int m = -1;
for (int i = 0; i < n; i++){
scanf("%d", &arr[i]);
m = (m > arr[i])? m : arr[i];
}
이제 for문으로 원점수/최댓값*100으로 변환하여 평균을 구한다.
double s = 0;
for (int i = 0; i < n; i++){
s += ((double)arr[i]/(double)m)*100.0;
}
이제 평균을 출력하면 된다.
printf("%.2\n", s/(double)n);
최종 코드
#include <stdio.h>
int main(){
int arr[1000];
int n, m = -1;
double s = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%d", &arr[i]);
m = (m > arr[i])? m : arr[i];
}
for (int i = 0; i < n; i++){
s += ((double)arr[i]/(double)m)*100.0;
}
printf("%.2f\n", s/(double)n);
}