문제
학점(A+, B0, C- 등)이 주어질 때 대응하는 평점(4.3, 3.0, 1.7 등)을 출력한다.
입력
첫째 줄에 학점이 주어진다 (A+, A0, A-, B+, ..., D-, F).
출력
학점에 대응하는 평점을 출력한다.
예제
| 입력 | 출력 |
|---|---|
A+ | 4.3 |
F | 0.0 |
풀이
학점 문자열의 첫 글자로 기본 점수를 결정하고, 둘째 글자로 +0.3 또는 -0.3을 조정한다.
- 첫 글자가 A이면 4, B이면 3, C이면 2, D이면 1, F이면 0.0을 출력하고 종료한다
- F가 아닌 경우 둘째 글자가 '+'이면 +0.3, '-'이면 -0.3을 더한다
- 최종 점수를 출력한다
핵심 아이디어: 학점 체계의 규칙성을 이용하여 A=4, B=3, C=2, D=1 매핑 후 +/- 보정으로 처리한다.
코드
package day549;
import java.io.*;
public class Day542BOJ2754학점계산 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
double grade = 0;
char c = s.charAt(0);
if (c == 'A') {
grade = 4;
} else if (c == 'B') {
grade = 3;
} else if (c == 'C') {
grade = 2;
} else if (c == 'D') {
grade = 1;
} else {
System.out.print("0.0");
return;
}
c = s.charAt(1);
if (c == '+') {
grade += 0.3;
} else if (c == '-') {
grade -= 0.3;
}
System.out.print(grade);
}
}복잡도
- 시간: O(1)
- 공간: O(1)