[백준] 25206번 너의 평점은 Java 문제 풀이

2023. 3. 17. 12:01알고리즘/백준

728x90
반응형

문제풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

interface Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

        String[] arr1 = {"A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F"};
        float[] arr2 = {4.5F, 4.0F, 3.5F, 3.0F, 2.5F, 2.0F, 1.5F, 1.0F, 0F};
        float sum1 = 0, sum2 = 0;
        for(int i=0; i<20; i++) {
            String[] arr = br.readLine().split(" ");
            if(!arr[2].equals("P")) {
                int idx = Arrays.binarySearch(arr1, arr[2]);
                sum1 += Float.parseFloat(arr[1]);
                sum2 += Float.parseFloat(arr[1]) * arr2[idx];
            }
        }
        System.out.print((float)Math.round((float)sum2/sum1*1000000)/1000000);
    }
}

각 줄마다 과목/학점/과목평점이 공백으로 구분됩니다.

그러므로 공백으로 나눴을 때 두 번째 값이 학점, 세 번째 값이 과목평점이 됩니다.

 

20번의 입력을 받으면서 과목평점이 P인 경우를 제외하면 모두 과목평점에 대한 점수가 존재합니다.

arr1에는 과목평점을 순서대로 저장하고,

arr2에는 과목평점에 대한 점수 값을 저장했습니다.

이렇게 하면 입력받은 과목 평점을 찾아 몇 번 인덱스에 위치했는지 알아내면 바로 그에 대한 점수 값을 알아낼 수 있습니다.

 

전공 평점은 (학점 * 과목평점의 총합) / (학점의 총합) 이 되기 때문에

sum2에는 학점 * 과목평점의 총합을 저장하고,

sum1에는 학점의 총합을 저장한 다음,

소수점 6자리까지 출력하도록 했습니다.

 

 

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

 

25206번: 너의 평점은

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

www.acmicpc.net

 

728x90
반응형