새소식

💻 Programming (프로그래밍)/C++ | 백준

[C++][백준] - 학점계산 (2754번)

  • -
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;
}

 

코드길이가 확연히 차이나네요 와우~


 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.