
전공평점:
전공과목별 (학점 × 과목평점)의 합을학점의 총합으로 나눈 값 출력
(정답과의 절대오차 또는 상대오차가 10^(-4) 이하이면 정답으로 인정
P(Pass)인 과목은 평점 계산에서 제외학점 합산 + 학점 × 과목평점 누적HashMap으로 처리해 조건문 없이 O(1) 조회P 등급 예외 처리만 하면 나머지는 단순 누적 연산printf("%f")로 부동소수점 출력 (기본 소수점 6자리, 오차 범위 충분히 만족)// 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값
import java.util.HashMap;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum_credit = 0;
double mult = 0.0;
HashMap<String, Double> gradeMap = new HashMap<>();
gradeMap.put("A+", 4.5);
gradeMap.put("A0", 4.0);
gradeMap.put("B+", 3.5);
gradeMap.put("B0", 3.0);
gradeMap.put("C+", 2.5);
gradeMap.put("C0", 2.0);
gradeMap.put("D+", 1.5);
gradeMap.put("D0", 1.0);
gradeMap.put("F", 0.0);
while (sc.hasNext()) {
String name = sc.next();
double credit = sc.nextDouble();
String grade = sc.next();
if (!grade.equals("P")) {
sum_credit += credit;
mult += credit * gradeMap.get(grade);
}
}
System.out.printf("%f", mult / (double) sum_credit);
}
}