[백준] 25206

ninano05·2026년 3월 24일

switch문 자바 버전 잘 보고 사용할것
String.format("%.5f",solution()) 과 같이 소수점 자리 수 정리 가능

import java.util.*;
import java.io.*;

public class Main {
    static ArrayList<Double> credits = new ArrayList<>();
    static ArrayList<Double> scores = new ArrayList<>();

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        credits = new ArrayList<>();
        scores = new ArrayList<>();

        for(int i=0; i<20; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            st.nextToken();
            credits.add(Double.parseDouble(st.nextToken()));
            scores.add(gradeToScore(st.nextToken()));
        }

        bw.write(solution()+"");
        bw.flush();
        bw.close();
        br.close();
    }

    public static double solution() {
        double answer = 0.0;
        double creditSum = 0.0;

        for(int i=0; i<credits.size();i++) {
            if(scores.get(i) < 5.0) {
                answer += (credits.get(i)*scores.get(i));
                creditSum += credits.get(i);
            }
        }

        answer = answer/creditSum;

        return answer;
    }

    public static double gradeToScore(String grade) {
        double score = 5.0;

        switch (grade) {
            case "A+":
                score = 4.5;
                break;
            case "A0":
                score = 4.0;
                break;
            case "B+":
                score = 3.5;
                break;
            case "B0":
                score = 3.0;
                break;
            case "C+":
                score = 2.5;
                break;
            case "C0":
                score = 2.0;
                break;
            case "D+":
                score = 1.5;
                break;
            case "D0":
                score = 1.0;
                break;
            case "F":
                score = 0.0;
                break;
            default:
                score = 5.0;
        }
        return score;
    }
}
profile
초보 개발자

0개의 댓글