
https://www.acmicpc.net/problem/25206
오랜만에 c++푸니까 다 까먹어서 하나씩 찾아보면서 풀었다. 20개 전공의 전공평점을 구하는거였다. 오랜만에 푸니까 string이 스페이스까지 같이 입력받는 줄 알고 stringstream을 써서 계속 오류가 났다.....
그래서 한 줄마다 과목명, 학점, 등급을 줘서 sum에다가 (학점 X 과목평점)을 더해주었고 grade에다가 학점을 더해줬다.
그리고 마지막에 sum/grade를 해줘서 값을 구해주었다.
#include <iostream>
#include <sstream>
#include <map>
#include <string>
using namespace std;
int main(void){
map<string, double> Grade;
Grade["A+"] = 4.5;
Grade["A0"] = 4.0;
Grade["B+"] = 3.5;
Grade["B0"] = 3.0;
Grade["C+"] = 2.5;
Grade["C0"] = 2.0;
Grade["D+"] = 1.5;
Grade["D0"] = 1.0;
Grade["F"] = 0.0;
double sum = 0;
double grade = 0;
for(int i=0;i<20;i++){
string x,y,z;
cin>>x>>y>>z;
if(z != "P"){
grade += stod(y);
sum += stod(y) * Grade[z];
}
}
cout<<sum/grade<<'\n';
}
등급에 따른 과목평점은 map으로 key, value값으로 넣어줬다. 그리고 string으로 double로 변환할때 stod 함수를 이용해서 변환해줬다.