https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
시험 성적 N개를 받아 조작하는 문제. 산술평균(이하 평균)에 대한 지식이 조금만 있다면 쉽게 풀고 넘어갈 문제이다.
평균을 간단히 정의하면 총합을 개수로 나눈 값인데, 결국 더해진 변량들에 같은 조작을 행한다면, 일일이 요소들을 조작하는 것이 아닌 평균을 한번 조작하면 끝난다.
예를 들어 1, 2, 3이 있다고 하자. 평균은 2일 것이다. 하지만 이 요소들에 2씩 곱하고 1을 더하는 조작을 해보자.
3, 5, 7이 되고, 평균은 5일 것이다. 평균에 2를 곱하고 1을 더한 값과 같다.
이를 문제에 적용해보면, 처음 점수의 평균을 구한 후에, 100/최댓값 이라는 값을 곱하여 평균을 조작하면 된다.
요소 하나하나에 접근 할 이유가 없는 것이다.
#include<stdio.h>
int main(){
int n; // 과목 개수
int score; // 점수 입력
double average; // 과목 점수 평균
int max = 0; // 점수 최댓값
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &score);
max = max > score ? max : score; //최댓값 저장
average += score; // 요소의 총합
}
average = average / (n*max) * 100; // (총합 / n) * (100/max)
printf("%f", average);
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 4344번 C언어 풀이 (0) | 2021.08.05 |
---|---|
백준 8958번 C언어 풀이 (0) | 2021.08.05 |
백준 3052번 C언어 풀이 (0) | 2021.08.04 |
백준 2577번 C언어 풀이 (0) | 2021.08.03 |
백준 2562번 C언어 풀이 (0) | 2021.08.03 |