# 문제
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
# 풀이
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으로 나눠서 출력해주면 끝!
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 5622번: 다이얼 | C++ 풀이 (0) | 2023.05.18 |
---|---|
[백준] 11720번: 숫자의 합 | C++ 풀이 (0) | 2023.05.17 |
[백준] 10811번: 바구니 뒤집기 | C++ 풀이 (0) | 2023.05.14 |
[백준] 3052번: 나머지 | C++ 풀이 (0) | 2023.05.13 |
[백준] 5597번: 과제 안 내신 분..? | C++ 풀이 (0) | 2023.05.12 |