문제
https://www.acmicpc.net/problem/25206
풀이
switch문을 사용하는 간단한 문제이다.
학점 * 과목평점의 합 / 학점의 총합
p등급은 계산에서 제외
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
//20줄 입력받기
//등급 전평으로 바꾸기
//학점*과목평점의 합 / 학점의 총합 출력
int N = 20;
double sum1 = 0; //학점*과목평점의 합
double sum2 = 0; //학점의 총합
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
String subject = st.nextToken();
double credit = Double.parseDouble(st.nextToken()); //학점
double grade = gradeIs(st.nextToken()); //과목평점
if(grade != -1) {
sum1 += (credit*grade);
sum2 += credit;
}
}
bw.write(sum1/sum2 + " ");
bw.close();
}
//전공 평점 반환기
static double gradeIs(String str) {
switch(str) {
case "A+":
return 4.5;
case "A0":
return 4.0;
case "B+":
return 3.5;
case "B0":
return 3.0;
case "C+":
return 2.5;
case "C0":
return 2.0;
case "D+":
return 1.5;
case "D0":
return 1.0;
case "F":
return 0.0;
}
return -1;
}
}
Note
switch문의 인자로 가능한 타입은 정해져있다. byte, short, char, int, String 등
switch문에서 문자열을 비교할 때는 내부적으로 equals를 쓴다.
break는 해당 switch문을 탈출하는 용도이다.
case 옆의 변수는 final(불변, 상수)이어야 한다.
'BOJ' 카테고리의 다른 글
[백준 10798/JAVA] 세로읽기 (0) | 2024.03.14 |
---|---|
[백준 2738번/JAVA] 행렬 덧셈 (0) | 2024.03.13 |
[백준 1316번/JAVA] 그룹 단어 체커 (0) | 2024.03.13 |
[백준 2941번/JAVA] 크로아티아 알파벳 (0) | 2024.03.11 |
[백준 1157번/JAVA] 단어 공부 (0) | 2024.03.11 |