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로 나누어 평점을 구한다
실행 결과
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 10798 세로읽기 (1) | 2023.10.03 |
---|---|
[BOJ] 1546 평균 (0) | 2023.10.03 |
[BOJ] 1316 그룹 단어 체커 (1) | 2023.09.30 |
[BOJ] 10988 팰린드롬인지 확인하기 (0) | 2023.09.30 |
[BOJ] 1629 곱셈 (0) | 2022.11.20 |