https://www.acmicpc.net/problem/25206
1. 아이디어
HashMap을 활용해서 등급에 따른 평점을 간단하게 구할 수 있다.
2. 문제풀이
HashMap에 key에 등급, value에 과목평점을 저장한 후 반복문을 돌며 과목 총점과 과목 수를 구한 후 나누는 방식으로 구현했다.
과목 등급이 P인 경우만 주의해서 구현하면 된다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
Map<String, Double> map = init();
double sum = 0;
double div = 0;
for (int i = 0; i < 20; i++) {
st = new StringTokenizer(br.readLine());
String subject = st.nextToken();
double score = Double.parseDouble(st.nextToken());
String grade = st.nextToken();
if (grade.equals("P")) continue;
sum += map.get(grade) * score;
div += score;
}
System.out.println(sum / div);
}
private static Map<String, Double> init() {
Map<String, Double> map = new HashMap<>();
map.put("A+", 4.5);
map.put("A0", 4.0);
map.put("B+", 3.5);
map.put("B0", 3.0);
map.put("C+", 2.5);
map.put("C0", 2.0);
map.put("D+", 1.5);
map.put("D0", 1.0);
map.put("F", 0.0);
return map;
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2738번 - 행렬 덧셈 [Java] (0) | 2025.01.08 |
---|---|
[백준] 20492번 - 세금 [Java] (0) | 2025.01.08 |
[백준] 1546번 - 평균 [Java] (0) | 2025.01.08 |
[백준] 25305번 - 커트라인 [Java] (1) | 2025.01.08 |
[백준] 25304번 - 영수증 [Java] (0) | 2025.01.08 |