https://www.acmicpc.net/problem/25206


review
과목명, 학점, 등급을 입력받아 등급을 점수로 변환해주고, 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값을 계산해주면 되기 때문에 비교적 간단한 문제였다.
C++에서는 문자열의 switch문이 동작하지 않기 때문에 if-else 문을 이용했다.
처음에 등급이 P인 과목은 계산에서 제외해야한다는 점을 고려하지 않고 코드를 작성했다가 예시 문제의 값과 다르게 나왔었다. 등급을 점수로 변환해주는 if-else문을 P가 아닌 경우에만 돌아가도록 조건문으로 감싸주어서 해결했다.
C++ code
#include <iostream>
#include <cstring>
using namespace std;
int main(){
string subject[20];
float credit[20];
float sum=0;
float sum2=0;
float score[20];
string grade[20];
for(int i=0;i<20;i++){
cin>> subject[i] >> credit[i]>> grade[i];
if (grade[i]!="P"){
sum+=credit[i];
if (grade[i]=="A+"){
score[i]=4.5;
}else if (grade[i]=="A0"){
score[i]=4.0;
}else if (grade[i]=="B+"){
score[i]=3.5;
}else if (grade[i]=="B0"){
score[i]=3.0;
}else if (grade[i]=="C+"){
score[i]=2.5;
}else if (grade[i]=="C0"){
score[i]=2.0;
}else if (grade[i]=="D+"){
score[i]=1.5;
}else if (grade[i]=="D0"){
score[i]=1.0;
}else {
score[i]=0.0;
}
}
sum2+=(credit[i]*score[i]);
}
cout<< sum2/sum << endl;
return 0;
}
result

'Programming > BOJ' 카테고리의 다른 글
| [BOJ] 2108 통계학 (C++) (0) | 2025.05.25 |
|---|