코딩/백준 문제 (브론즈)

[백준/1546/C언어] 평균 풀이

룻밤 2023. 4. 2. 17:06

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

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net


#include <stdio.h>

int main() {
	int n;		// 입력받을 과목 개수 n 정의
	int max = 0;	// 가장 점수가 높은 과목 max 정의
	double avg = 0;	// 점수/max*100에 사용할 변수 avg 정의

	scanf("%d", &n);	// n 과목수 입력받음

	int score[1000];	// 점수 배열 score 생성 ( <=1000)
	
	for (int i = 0; i < n; i++)		// 입력받은 n에 따라 어떤 원소가 max일지 구하는 반복문
	{
		scanf("%d", &score[i]);		// n개에 맞게 원소값 입력
		if (max < score[i])		// max가 score[i] 값 비교했을때 작다면
			max = score[i];		// max는 score[i]와 같다
	}
	for (int i = 0; i < n; i++)		// 모든 점수(원소)를 차례대로 각 점수 / max * 100으로 하기 위한 반복문
	{
		avg += (double)score[i] / max * 100;	// 새로운 평균값을 구하기 위해 모든 avg를 더함
												// 실수값이 나와야해서 (double)로 강제 형변환을 시킴
	}											

	printf("%lf\n", avg/n);		// 새로운 평균값 출력

	return 0;
}

강제형변환 말고

max, avg, score[1000]을 double이나 float형으로 정의해서 풀어도 된다.