본문 바로가기
백준 문제풀이/Java

[백준] 25206번 너의 평점은

by isfp_yykkng 2024. 3. 21.

[백준] 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 subjects[] = new String[20];
        String[] grades = {"A+","A0","B+","B0","C+","C0","D+","D0","F","P"};
        double[] scores = {4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0, 0.0};
        double grade_sum = 0;
        double score_sum = 0;
        for(int i =0; i<20; i++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            String subject = st.nextToken();
            double score = Double.parseDouble(st.nextToken());
            String grade = st.nextToken();
            if(!grade.equals("P")) score_sum += score;
            for(int j=0; j< grades.length; j++){
                if(grade.equals(grades[j])){
                    grade_sum += score * scores[j];
                }
            }
        }
        System.out.printf("%.6f\n" ,grade_sum/score_sum);
    }
}

 

문제에서 나온 학점에 대한 점수를 인덱스에 맞게 각 1차원 배열에 저장하는 것이 핵심이다. 총 20개에 대한 성적을 내는 것이므로 20번의 for문을 반복하면서 해당 등급에 맞는 점수를 학점에 곱하고 더한다. 이때! " P " 는 계산에 반영하지 않기 때문에 학점들의 합을 구할 때만 제외해주면 된다. (점수계산할 때는 어차피 0을 더하기 때문에 상관x)