[백준 2754] 학점계산 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
학점 문자열이 주어지는 상황에서, 13가지 학점 중 하나(A+, A0, A-, B+, B0, B-, C+, C0, C-, D+, D0, D-, F)가 주어질 때, 해당 학점에 대응하는 평점을 소수 첫째 자리까지 출력하는 문제입니다.
평점 환산 규칙은 다음과 같습니다:
- A: 4.0, B: 3.0, C: 2.0, D: 1.0, F: 0.0
- +가 붙으면 0.3 추가, -가 붙으면 0.3 감소, 0은 변동 없음
접근법
학점의 첫 문자로 기본 평점을 결정합니다.
F가 아닌 경우, 두 번째 문자를 확인하여 +이면 0.3을 더하고, -이면 0.3을 빼서 최종 평점을 계산합니다.
소수 첫째 자리까지 고정 소수점 형식으로 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Globalization;
namespace Solution {
class Program {
static void Main(string[] args) {
var grade = Console.ReadLine()!;
var score = 0.0;
score = grade[0] switch {
'A' => 4.0,
'B' => 3.0,
'C' => 2.0,
'D' => 1.0,
_ => 0.0
};
if (grade[0] != 'F' && grade.Length > 1) {
if (grade[1] == '+') score += 0.3;
else if (grade[1] == '-') score -= 0.3;
}
Console.WriteLine(score.ToString("F1", CultureInfo.InvariantCulture));
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string grade; cin >> grade;
double score = 0.0;
switch (grade[0]) {
case 'A': score = 4.0; break;
case 'B': score = 3.0; break;
case 'C': score = 2.0; break;
case 'D': score = 1.0; break;
default: score = 0.0; break;
}
if (grade[0] != 'F' && grade.size() > 1) {
if (grade[1] == '+') score += 0.3;
else if (grade[1] == '-') score -= 0.3;
}
cout << fixed << setprecision(1) << score << "\n";
return 0;
}