[Baekjoon] 25206번: 너의 평점은

2023. 3. 13. 17:03Computer Sciences/Problem Solve

https://www.acmicpc.net/problem/25206

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

문제 설명

20줄의 수강 정보가 주어진다. ( 과목별 학점 x 등급의 총합 ) / 학점 총합 한 결과를 출력하면 된다. 단, 패스 과목은 제외한다.

풀이 방법

보통 소수점 출력 시 Math.round()와 String.format() 둘 중 하나의 방법을 사용하는데 이 문제의 경우 소수점까지 출력해야 하기 때문에 String.format()을 사용해야 한다.

package baekjoon.math;

import java.io.*;

public class BOJ25206 {

    final static int COUNT_ENROLLED_CLASS = 20;
    final static float[] GRADE = {4.5f, 4.0f, 3.5f, 3.0f, 2.5f, 2.0f, 1.5f, 1.0f, 0.0f};

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        float total = 0;
        float sum = 0;

        for (int i = 0; i < COUNT_ENROLLED_CLASS; i++) {
            String[] infos = br.readLine().split(" ");
            float credit = Float.parseFloat(infos[1]);
            switch (infos[2]) {
                case "A+":
                    sum += credit * GRADE[0];
                    break;
                case "A0":
                    sum += credit * GRADE[1];
                    break;
                case "B+":
                    sum += credit * GRADE[2];
                    break;
                case "B0":
                    sum += credit * GRADE[3];
                    break;
                case "C+":
                    sum += credit * GRADE[4];
                    break;
                case "C0":
                    sum += credit * GRADE[5];
                    break;
                case "D+":
                    sum += credit * GRADE[6];
                    break;
                case "D0":
                    sum += credit * GRADE[7];
                    break;
                case "F":
                    sum += credit * GRADE[8];
                    break;
                case "P":
                    total -= credit; // 총합에서 패스 과목은 빼야하기 때문에 제거
                default:
                    break;
            }
            total += credit;
        }
        System.out.print(String.format("%.6f", sum / total));
    }
}