https://www.acmicpc.net/problem/2754
2754번: 학점계산
어떤 사람의 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
www.acmicpc.net
🔔 문제 :
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
인 성적의 기준일때
성적의 평점을 출력하는 문제입니다.
ex) A0 -> 4.0
🔔 Kick Point :
저는 printf를 사용하고 싶지 않아서 간단하게 조건문으로만 채워넣었는데, 코드가 길어지더라구요
그래서 아래 처음 조건문으로 만든 코드가 너무 길다 싶어서
새롭게 코드를 짰는데 문자열의 아스키코드를 활용한 예로
'E'와 {'A', 'B', 'C', 'D'} 는 각자 차이가 학점만큼인것을 이용하였습니다.
그리고
cout << fixed;
cout .precision()을 이용하여 새롭게 구현해보았습니다.
🔔 Code :
이전
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cin >> str;
if (str[0] == 'A') {
if (str[1] == '+') cout << "4.3";
else if (str[1] == '-') cout << "3.7";
else { cout << "4.0"; }
}
else if (str[0] == 'B') {
if (str[1] == '+') cout << "3.3";
else if (str[1] == '-') cout << "2.7";
else { cout << "3.0"; }
}
else if (str[0] == 'C') {
if (str[1] == '+') cout << "2.3";
else if (str[1] == '-') cout << "1.7";
else { cout << "2.0"; }
}
else if (str[0] == 'D') {
if (str[1] == '+') cout << "1.3";
else if (str[1] == '-') cout << "0.7";
else { cout << "1.0"; }
}
else cout << "0.0";
}
이후
#include <iostream>
using namespace std;
int main() {
char c[2]; cin >> c[0] >> c[1];
float f;
if (c[0] == 'F') f = 0.0f;
else {
f = (float)'E' - c[0];
if (c[1] == '+') f += 0.3f;
else if (c[1] == '-') f -= 0.3f;
}
cout << fixed; cout.precision(1);
cout << f;
}
코드길이가 확연히 차이나네요 와우~