티스토리 뷰
map을 사용하여 등급에 따른 과목평점을 저장하여 전공 평점을 구할 때 사용하면 됩니다.
주의할 점은 과목 등급이 P이면 전공 평점과 학점 총합을 구할 때 무시해야 합니다.
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <map>
using namespace std;
vector<string> split(string s) {
istringstream ss(s);
string buffer;
vector<string> result;
while (getline(ss, buffer, ' ')) {
result.push_back(buffer);
}
return result;
}
double calculate(vector<string> vector, map<string, double> map) {
string grade = vector[2];
if (grade == "P")
return 0;
double point = stof(vector[1]);
return map[grade] * point;
}
double calculateMyPoint(vector<string> vector) {
if(vector[2] == "P")
return 0;
return stof(vector[1]);
}
map<string, double> initializer_map() {
map<string, double> map;
map["A+"] = 4.5;
map["A0"] = 4.0;
map["B+"] = 3.5;
map["B0"] = 3.0;
map["C+"] = 2.5;
map["C0"] = 2.0;
map["D+"] = 1.5;
map["D0"] = 1.0;
map["F"] = 0.0;
return map;
}
int main() {
map<string, double> map = initializer_map();
double calculateSum = 0; // 전공 평점
double myPointSum = 0; // 학점 총합
for (int i = 0; i < 20; i++) {
string s;
getline(cin, s);
vector<string> vector = split(s);
calculateSum += calculate(vector, map);
myPointSum += calculateMyPoint(vector);
}
printf("%.6f", calculateSum / myPointSum);
}
https://www.acmicpc.net/problem/25206