코딩테스트/백준
[백준] 1546번 : 평균
쪼르뚜
2024. 2. 1. 20:56
728x90
반응형
🔗 문제 링크
https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
👩💻 코드
#include <iostream>
using namespace std;
int main(){
int N = 0;
int scores[1000];
long sum = 0;
long max = 0;
cin >> N;
for (int i=0; i<N; i++){
cin >> scores[i];
}
for (int i=0; i<N; i++){
if(scores[i] > max){
max = scores[i];
}
sum += scores[i];
}
double average = sum * 100.0 / N / max;
cout << average;
}
✏️ 풀이
문제에 주어진 그대로 코드를 짰더니 두 군데에서 문제가 생겼다.
처음에 각각의 점수를 계산하였는데 수식을 풀면 더 간단하게 연산이 가능했다.
x / N * 100 + y / N * 100 + z / N * 100 = (x+y+z) * 100 / N
그리고 오차를 줄이기 위해 자료형을 재설정해야했다.
long과 double, 수식의 * 100.0
728x90
반응형