[백준] 25206번 너의 평점은 - 자바
문제
해설
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String subjects[] = new String[20];
String[] grades = {"A+","A0","B+","B0","C+","C0","D+","D0","F","P"};
double[] scores = {4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0, 0.0};
double grade_sum = 0;
double score_sum = 0;
for(int i =0; i<20; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String subject = st.nextToken();
double score = Double.parseDouble(st.nextToken());
String grade = st.nextToken();
if(!grade.equals("P")) score_sum += score;
for(int j=0; j< grades.length; j++){
if(grade.equals(grades[j])){
grade_sum += score * scores[j];
}
}
}
System.out.printf("%.6f\n" ,grade_sum/score_sum);
}
}
문제에서 나온 학점에 대한 점수를 인덱스에 맞게 각 1차원 배열에 저장하는 것이 핵심이다. 총 20개에 대한 성적을 내는 것이므로 20번의 for문을 반복하면서 해당 등급에 맞는 점수를 학점에 곱하고 더한다. 이때! " P " 는 계산에 반영하지 않기 때문에 학점들의 합을 구할 때만 제외해주면 된다. (점수계산할 때는 어차피 0을 더하기 때문에 상관x)
'백준 문제풀이 > Java' 카테고리의 다른 글
[백준] 2738번 행렬 덧셈 (0) | 2024.03.22 |
---|---|
[백준] 10988번 팰린드인지 확인하기 (0) | 2024.03.22 |
[백준] 2444번 별찍기 - 7 (0) | 2024.03.20 |
[백준] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2024.03.20 |
[백준] 11718번 그대로 출력하기 (0) | 2024.03.20 |