


학점과 등급에 따른 전공평점을 계산하는 문제이다.
등급에 따른 과목평점을 잘 mapping만 시켜주면 어렵지 않게 풀 수 있다.
단, "P학점"은 계산에서 제외해야 하며,
최소 한 과목은 P등급을 받지 않는다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
HashMap<String, Float> hm = new HashMap<String, Float>();
hm.put("A+", 4.5f);
hm.put("A0", 4.0f);
hm.put("B+", 3.5f);
hm.put("B0", 3.0f);
hm.put("C+", 2.5f);
hm.put("C0", 2.0f);
hm.put("D+", 1.5f);
hm.put("D0", 1.0f);
hm.put("F", 0.0f);
// 등급과 전공평점 mapping
float totalPoints = 0;
float totalCredits = 0;
for(int i=0; i<20; i++){
String s = br.readLine();
st = new StringTokenizer(s, " ");
st.nextToken(); // 과목은 계산에 사용x => 버림
float credit = Float.parseFloat(st.nextToken());
String grade = st.nextToken();
if(!grade.equals("P")){ // P등급은 계산에서 제외
totalPoints += credit * hm.get(grade); // mapping된 컬렉션 호출로 계산
totalCredits += credit;
}
}
System.out.println(totalPoints/totalCredits);
br.close();
}
}
맞았습니다!!