[백준] 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
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 5086번 배수와 약수 Java 문제 풀이 (0) | 2023.03.20 |
---|---|
[백준] 10798번 세로읽기 Java 문제 풀이 (0) | 2023.03.17 |
[백준] 10988번 팰린드롬인지 확인하기 Java 문제 풀이 (0) | 2023.03.16 |
[백준] 10812번 바구니 순서 바꾸기 Java 문제 풀이 (2) | 2023.03.15 |
[백준] 2444번 별 찍기 - 7 Java 문제 풀이 (0) | 2023.03.14 |