Algorithm/BOJ
[BOJ] 25206 너의 평점은
SolB
2023. 9. 30. 17:30
25206 너의 평점은
코드
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));
String str[] = new String[20];
double total = 0;
double credits = 0;
for(int i = 0; i < 20; i++){
str[i] = br.readLine();
StringTokenizer st = new StringTokenizer(str[i], " ");
st.nextToken();
double credit = Double.parseDouble(st.nextToken());
String grade = st.nextToken();
total += credit * calculateRating(grade);
if(!grade.equals("P")) credits += credit;
}
double avg = total/credits;
System.out.printf("%.6f\n", avg);
}
public static double calculateRating(String grade) {
if (grade.equals("A+")) return 4.5;
if (grade.equals("A0")) return 4.0;
if (grade.equals("B+")) return 3.5;
if (grade.equals("B0")) return 3.0;
if (grade.equals("C+")) return 2.5;
if (grade.equals("C0")) return 2.0;
if (grade.equals("D+")) return 1.5;
if (grade.equals("D0")) return 1.0;
else return 0.0;
}
}
코드 설명
- 20줄을 입력받기 때문에, for문으로 20번 반복하여 str[i]를 입력받는다
- 입력받은 한 줄을 각 subject, credit, grade로 토큰화한다
- total에 credit과 calculateRating(grade)를 누적시킨다
- calculateRating은 grade(ex. A+)를 점수(ex. 4.5)로 변환하기 위한 함수이다
- grade "P"일 경우, 총 학점 수에는 포함되지 않기 때문에 이를 제외하고 총 몇학점을 들었는지 credits에 누적시킨다
- 최종적으로 total을 credits로 나누어 평점을 구한다