백준/C++
[Baekjoon/C++] 2754번 - 학점계산
베리._.
2022. 8. 20. 16:56
Baekjoon Online Judge
문제
어떤 사람의 C언어 성적이 주어졌을 때, 평점은 몇 점인지 출력하는 프로그램을 작성하시오.
A+: 4.3, A0: 4.0, A-: 3.7
B+: 3.3, B0: 3.0, B-: 2.7
C+: 2.3, C0: 2.0, C-: 1.7
D+: 1.3, D0: 1.0, D-: 0.7
F: 0.0
입력
첫째 줄에 C언어 성적이 주어진다. 성적은 문제에서 설명한 13가지 중 하나이다.
출력
첫째 줄에 C언어 평점을 출력한다.
예제 입력 | 예제 출력 |
A0 | 4.0 |
풀이
#include <iostream>
using namespace std;
int main() {
char sign[3] = {'+', '0', '-'}; // 성적의 부호
double score[3] = { 4.3, 4.0, 3.7 }; // 각 부호의 최고 점수
string c;
cin >> c;
double num = 0; // 평점
// 평점 구하기
if (c[0] != 'F') {
int i;
for (i = 0; i < 3; i++)
if (sign[i] == c[1]) break;
int n = c[0] - 'A';
num = score[i] - n;
}
// 소수점 자리 고정
cout << fixed;
cout.precision(1);
// 출력
cout << num << endl;
return 0;
}
A+와 B+, A0와 B0, A-와 B-의 점수 차이는 모두 1이므로 소수 부분은 같은 부호라면 F만 예외적으로 다르고 나머지는 모두 같다. 이를 이용해서 부호와 그 부호의 최고 점수를 미리 저장한 뒤 이를 이용해 문제를 풀었다.