import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
double creSum=0;
double creGp=0;
for(int i=0; i<20; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String subject = st.nextToken();
double credit = Double.parseDouble(st.nextToken());
String gp = st.nextToken();
double gpNum=0.0;
switch(gp) {
case "A+": gpNum = 4.5;
break;
case "A0": gpNum = 4.0;
break;
case "B+": gpNum = 3.5;
break;
case "B0": gpNum = 3.0;
break;
case "C+": gpNum = 2.5;
break;
case "C0": gpNum = 2.0;
break;
case "D+": gpNum = 1.5;
break;
case "D0": gpNum = 1.0;
break;
case "F": gpNum = 0.0;
break;
case "P": gpNum = 0.0;
credit=0;
break;
}
creGp += credit * gpNum;
creSum += credit;
}
System.out.println(creGp/creSum);
}
}
StringTokenizer로 공백을 이용하여 토큰을 입력받을 때, 세번째 token인 등급은 문자로 입력받지만,
계산을 할때는 두번째 토큰인 학점과 곱하여야 하므로 정수 타입의 값을 등급에 맡게 설정해줘야 한다.
switch 문을 사용하면 간단하게 바꿔줄 수 있다.
p/f 과목의 경우, F를 받았을 때와 마찬가지로 과목 평점을 0점 처리해주는데, 학점까지 0 점 처리 해줘야 성적에 반영되지 않는다. 그러므로, case P : 에 credit=0 까지 추가해줘야 한다.
'알고리즘 풀이' 카테고리의 다른 글
[백준] 2941번: 크로아티아 알파벳 - java 풀이 (0) | 2023.06.27 |
---|---|
[백준] 1157번: 단어 공부 - java 풀이 (0) | 2023.06.27 |
[백준] 10988번: 팰린드롬인지 확인하기 - java 풀이 / 주소값 비교(==) 와 대상 값 비교(equals) (0) | 2023.06.22 |
[백준] 2444번: 별 찍기 - 7 - java 풀이 (0) | 2023.06.21 |
[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - java 풀이 (0) | 2023.06.21 |