백준/C++

[백준] 1546번: 평균 | C++ 풀이

성실한 당근농부 2023. 5. 16. 23:37

# 문제

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

 

 


 

# 풀이

1차원 배열의 마지막 문제다. 그렇지만 아주아주 간단한 문제!

정답 소스코드를 보며 필요한 개념을 정리해보자.

 

#include <iostream>
using namespace std;

int main(){
    int n;
    int max = 0;
    double sum = 0;
    cin >> n;
    
    double score[n];
    for(int i=0; i<n; i++){
        cin >> score[i];
        if(max < score[i]) max = score[i];
    }

    for(int i=0; i<n; i++){
        score[i] = (score[i]/max)*100;
        sum += score[i];
    }

    cout << sum/n;
    
    return 0;
}

 

 

아무 생각 없이 풀다보면 어라 할 수 있는 문제... 내가 그런 건 아니고

 

변수 선언 시 세준이의 현재 성적은 '100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다'는 조건이 있었기 때문에 변수 max값을 선언할 때 0으로 초기화 해주었다.

 

 

double score[n];
for(int i=0; i<n; i++){
    cin >> score[i];
    if(max < score[i]) max = score[i];
}

 

세준이의 현재 성적과 새롭게 구할 성적을 같은 배열에 넣기 위해 double 형으로 선언했다.

그리고 for문을 통해 현재 성적을 넣어주며 바로 최댓값을 구했다.

 

 

for(int i=0; i<n; i++){
    score[i] = (score[i]/max)*100;
    sum += score[i];
}

cout << sum/n;

 

현재 점수를 받으며 최댓값도 바로 구했으니, 다시 한번 for문을 돌며 새로운 성적을 구해준다.

새로운 평균을 구하기 위해 다시 구한 성적을 sum 변수에 담아주고 바로 시험 본 과목의 개수인 n으로 나눠서 출력해주면 끝!

 

 

 

 

 


 

 

 

1546번: 평균

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

www.acmicpc.net

 

728x90