문제 바로가기
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)를 곱하여 출력한다. |
'Coding > BOJ' 카테고리의 다른 글
[BOJ 백준] 4153 - 직각삼각형 (C++) (1) | 2023.11.23 |
---|---|
[BOJ 백준] 1676 - 팩토리얼 0의 개수 (C++) (1) | 2023.11.20 |
[BOJ 백준] 1436 - 영화감독 숌 (C++) (0) | 2023.11.18 |
[BOJ 백준] 1259 - 팰린드롬수 (C++) (0) | 2023.11.17 |
[BOJ 백준] 1181 - 단어 정렬 (C++) (0) | 2023.11.16 |