티스토리 뷰

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

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

 

Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30