[BOJ 백준] 1546 - 평균 (C++)

문제 바로가기

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

 

1546번: 평균

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

www.acmicpc.net


관련 알고리즘

- 해당 없음


정답 및 해설

각 과목별 점수의 평균을 백분위로 환산하여 나타내는 간단한 수학 문제이다.

먼저 '총점/과목 수'로 평균을 구한 뒤, 최고점을 100점으로 환산해야 하기때문에 '100/최고점'을 곱하여 해결한다.


C++

더보기
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    double MAX=0,tot=0,score;
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>score;
        MAX=max(score,MAX);
        tot+=score;
    }
    cout<<fixed;
    cout.precision(3);
    cout<<(tot/n)*(100/MAX);
}

 

Line 해설
4~5 int n : 과목 수
double score : 각 과목의 점수를 저장
double MAX : 과목별 점수 중 최고점
double tot : 각 과목 점수의 총합
정답을 소수점 둘째자리 이하의 오차로 출력하기 위해 점수를 다루는 변수를 double 자료형으로 선언했다.
6~11 과목의 수(n)을 입력하고, for 반복문으로 i를 0~n-1 범위내에서 반복하며 score에 입력받습니다.
입력받은 후 max 함수를 통해 기존 최댓값(MAX)와 입력받은 점수(score)를 비교하여 MAX를 업데이트한다.
그 후, tot에 점수를 누적하여 총점을 구한다.
12~14 cout<<fixed; 구문으로 소수점을 고정 출력하도록 변경하고
coud.precision(3); 으로 소수점 3자리까지 출력하도록 설정합니다.
그 후, 평균(tot/n)과 백분위(100/MAX)를 곱하여 출력한다.