문제설명
소스코드
#include <iostream>
using namespace std;
int main() {
string majorName; double avg = 0; float sumGrade = 0;
double score[20]; float grade[20];
string input;
for (int i = 0; i < 20; ++i)
{
cin >> majorName >> grade[i] >> input;
if (input == "A+") score[i] = 4.5;
else if (input == "A0") score[i] = 4.0;
else if (input == "B+") score[i] = 3.5;
else if (input == "B0") score[i] = 3.0;
else if (input == "C+") score[i] = 2.5;
else if (input == "C0") score[i] = 2.0;
else if (input == "D+") score[i] = 1.5;
else if (input == "D0") score[i] = 1.0;
else if (input == "F") score[i] = 0.0;
else if (input == "P") { score[i] = 0.0; grade[i] = 0; }
avg += (score[i] * grade[i]);
sumGrade += grade[i];
}
avg = avg / sumGrade;
cout << fixed;
cout.precision(6);
cout << avg;
}
풀이
- 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
- 전공 이름은 입력만 받고 따로 처리하지는 않는다.(필요없는 변수이다.)
- 전공이름, 학점, 과목평점을 입력받는다.
- 과목평점을 string형 변수 input에 받는다.
- input은 과목평점이므로 각 맞는 숫자로 변환시켜 배열에 저장한다.
- avg에 과목평점과 학점을 곱한 값을 모두 더한다.
- sumGrade에 모든 학점을 더한다.
- avg에 avg / sumGrade의 값을 대입한다.
- 소숫점 아래 6자리까지 출력한다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 7단계 - 2566번 문제 (최댓값) (0) | 2023.04.18 |
---|---|
[C++] 백준 7단계 - 2738번 문제 (행렬 덧셈) (0) | 2023.04.17 |
[C++] 백준 6단계 - 1316번 문제 (그룹 단어 체커) (0) | 2023.04.16 |
[C++] 백준 6단계 - 2941번 문제 (크로아티아 알파벳) (0) | 2023.04.15 |
[C++] 백준 - 10039번 문제 (평균 점수) (0) | 2023.04.15 |