해결방법
등급을 입력받으면 그 등급을 점수로 변환해주는 함수를 만들어서 평점을 구한다. 만약 P/F의 경우 계산에서 제외해야 하기 때문에 -1로 변환해준다. 0보다 작은 경우, 즉 P/F의 경우 continue를 통해 넘겨버리면 된다.
정답 코드
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
float getGradePoint(string grade)
{
if (grade == "A+") return 4.5;
if (grade == "A0") return 4.0;
if (grade == "B+") return 3.5;
if (grade == "B0") return 3.0;
if (grade == "C+") return 2.5;
if (grade == "C0") return 2.0;
if (grade == "D+") return 1.5;
if (grade == "D0") return 1.0;
if (grade == "F") return 0.0;
return -1.0;
}
int main()
{
string subject;
float credit, total = 0.0, totalGrade = 0.0;
string grade;
for (int i = 0; i < 20; i++)
{
cin >> subject >> credit >> grade;
float gradePoint = getGradePoint(grade);
if (gradePoint < 0) continue;
total += credit;
totalGrade += credit * gradePoint;
}
float majorGPA = totalGrade / total;
cout << fixed << setprecision(6) << majorGPA << endl;
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 부녀회장이 될테야 2775 (0) | 2024.12.15 |
---|---|
BOJ - 데칼코마니 23841 (0) | 2024.12.15 |
BOJ - 블랙잭 2798 (0) | 2024.12.15 |
BOJ - 학생 인기도 측정 25325 (0) | 2024.12.15 |
BOJ - 2292 벌집 (0) | 2024.12.15 |