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만 예외적으로 다르고 나머지는 모두 같다. 이를 이용해서 부호와 그 부호의 최고 점수를 미리 저장한 뒤 이를 이용해 문제를 풀었다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 4101번 - 크냐? (0) | 2022.08.20 |
---|---|
[Baekjoon/C++] 3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2022.08.20 |
[Baekjoon/C++] 1059번 - 좋은 구간 (0) | 2022.08.14 |
[Baekjoon/C++] 1057번 - 토너먼트 (0) | 2022.08.14 |
[Baekjoon/C++] 1051번 - 숫자 정사각형 (0) | 2022.08.14 |