728x90
https://www.acmicpc.net/problem/25206
문제 및 입출력 예제를 작성하는 것이 매우 귀찮기 때문에 링크 후 문제 풀이만 작성하는 걸로...
✅ 문제 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void solution() {
final int ROWS = 20;
Map<String, Double> gradePoint = Map.of(
"A+", 4.5, "A0", 4.0,
"B+", 3.5, "B0", 3.0,
"C+", 2.5, "C0", 2.0,
"D+", 1.5, "D0", 1.0,
"F", 0.0
);
double weightedSum = 0.0;
double creditSum = 0.0;
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
for (int i=0; i<ROWS; i++) {
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line);
st.nextToken();
double credit = Double.parseDouble(st.nextToken());
String grade = st.nextToken();
if (!grade.equals("P")) {
weightedSum += credit * gradePoint.get(grade);
creditSum += credit;
}
}
} catch(IOException e) {
System.out.println(e);
}
double avg = weightedSum / creditSum;
System.out.printf("%.6f%n", avg);
}
public static void main(String[] args) {
solution();
}
}
다소 번잡한 것 같기는 하지만 더 이상 어떻게 줄여야 할지 머리가 안 돌아간다...
'알고리즘 > 백준' 카테고리의 다른 글
브론즈3 - 최댓값 (1) | 2025.05.14 |
---|---|
브론즈3 - 행렬 덧셈 (0) | 2025.05.12 |
실버5 - 그룹 단어 체커 (1) | 2025.04.14 |
실버5 - 크로아티아 알파벳 (0) | 2025.04.14 |