본문 바로가기

코딩테스트/백준

[백준] 1546번 : 평균

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
반응형