https://www.acmicpc.net/problem/25206
❓문제
🔅해석
복잡한 논리없이 풀 수 있는 문제이다.
입력 값으로 과목명, 학점, 등급이 공백으로 구분되어 주어지는데 과목명은 계산에 영향을 미치지 않으므로 따로 저장을 하지 않는다.
학점, 등급만 입력시 바로 누적합을 구한다.
다만, 등급은 문자열로 입력되기에 if문이나 switch 문을 통해 실수로 변환한다.
전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값으로 계산한다.
⭕정답 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int major = 20; //전공과목 수
float grades = 0;
float scores = 0;
for (int i=0; i<major; i++) {
st = new StringTokenizer(br.readLine());
st.nextToken();
float grade = Float.parseFloat(st.nextToken());
String score = st.nextToken();
if (score.equals("P")) {
continue;
}
grades += grade;
scores += conversion(score)*grade;
}
System.out.printf("%.6f", scores/grades);
}
//입력받은 문자열 등급을 점수로 변환한다.
private static float conversion(String str) {
switch (str) {
case "A+":
return 4.5f;
case "A0":
return 4.0f;
case "B+":
return 3.5f;
case "B0":
return 3.0f;
case "C+":
return 2.5f;
case "C0":
return 2.0f;
case "D+":
return 1.5f;
case "D0":
return 1.0f;
case "F":
return 0;
default:
break;
}
return 0;
}
}
❗결과
'코딩테스트 > 백준' 카테고리의 다른 글
[코테] 백준 10250번 : ACM 호텔 (java) (0) | 2023.10.29 |
---|---|
[코테] 백준 2587번 : 대표값2 (java) (0) | 2023.10.28 |
[코테] 백준 29813번 : 최애의 팀원 (java) (0) | 2023.09.24 |
[코테] 백준 29812번 : 아니 이게 왜 안 돼 (java) (0) | 2023.09.24 |
[코테] 백준 29807 학번을 찾아줘 (java) (0) | 2023.09.22 |