[백준 25206] 너의 평점은 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
20개 전공과목의 학점과 등급이 주어질 때, 등급이 P인 과목을 제외하고 전공평점을 계산하는 문제입니다.
접근법
등급 문자열을 과목평점으로 변환한 뒤, 학점 × 과목평점의 합과 학점 합을 누적합니다.
등급이 P인 과목은 두 합에서 모두 제외합니다.
마지막에 누적한 점수 합을 학점 합으로 나누면 전공평점이 됩니다.
Code
C#
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
31
32
using System;
using System.Collections.Generic;
using System.Globalization;
class Program {
static void Main() {
var score = new Dictionary<string, double> {
["A+"] = 4.5, ["A0"] = 4.0,
["B+"] = 3.5, ["B0"] = 3.0,
["C+"] = 2.5, ["C0"] = 2.0,
["D+"] = 1.5, ["D0"] = 1.0,
["F"] = 0.0
};
double sum = 0.0;
double creditSum = 0.0;
for (int i = 0; i < 20; i++) {
var p = Console.ReadLine()!.Split();
double credit = double.Parse(p[1], CultureInfo.InvariantCulture);
string grade = p[2];
if (grade == "P")
continue;
sum += credit * score[grade];
creditSum += credit;
}
Console.WriteLine((sum / creditSum).ToString("F6", CultureInfo.InvariantCulture));
}
}
C++
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
31
32
33
34
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
unordered_map<string, double> score = {
{"A+", 4.5}, {"A0", 4.0},
{"B+", 3.5}, {"B0", 3.0},
{"C+", 2.5}, {"C0", 2.0},
{"D+", 1.5}, {"D0", 1.0},
{"F", 0.0}
};
double sum = 0.0;
double creditSum = 0.0;
for (int i = 0; i < 20; i++) {
string subject, grade;
double credit;
cin >> subject >> credit >> grade;
if (grade == "P")
continue;
sum += credit * score[grade];
creditSum += credit;
}
cout << fixed << setprecision(6) << (sum / creditSum) << "\n";
return 0;
}