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

 

1546번: 평균

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

www.acmicpc.net

#include <stdio.h>
#pragma warning(disable:4996)
int main() {
	int n, n1[1000], max = 0;
	double total = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++){
		scanf("%d", &n1[i]);
		if(n1[i] > max)
			max = n1[i];
		total += n1[i];
	}
	printf("%f", 100.0 * total / max / n);
	return 0;
}

이 문제는 과목 갯수만큼 각 점수를 입력받고, 나머지 값 / 가장 큰 값 * 100을 출력하면 해결할 수 있는 문제이다.

코드의 순서는 다음과 같다.

1. 과목 갯수와 입력받을 수, 최댓값을 저장할 변수를 선언한다.

2. 나머지 값을 저장할 변수를 선언한다.

3. 반복문을 이용해 각 점수를 입력받는다.

만약 최댓값이 방금 입력받은 변수보다 작다면, 최댓값에 방금 입력받은 변수를 저장한다.

4. 나머지 값들은 total 변수에 더한다.

5. 나머지 값과 최댓값, 과목 갯수를 나눈 후에 100.0을 곱하여 출력한다.

이 때 소수점까지 출력해야 하므로 * 100이 아닌 * 100.0을 이용해 형변환한다.

 

방식만 이해하면 그리 어려운 문제가 아니지만, 초반에 형변환 하는 방법이 미숙해 오답을 많이 낸 문제였다...

'TeamLog > 과제' 카테고리의 다른 글

1598. 꼬리를 무는 숫자 나열  (0) 2023.04.10
1402. 아무래도이문제는A번난이도인것같다  (0) 2023.04.09
8958. OX퀴즈  (0) 2023.04.09
2609. 최대공약수와 최소공배수  (0) 2023.04.09
1259. 팰린드롬수  (0) 2023.04.09
vkeod