반응형
● 문제 접근 과정
1. 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
2. P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.
3. 20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.
4. for문을 이용하여 20가지의 과목명, 학점, 등급을 입력받는다.
5. 각 등급에 맞게 조건을 걸어 score이라는 배열에 저장을 한다.
6. avg 값에 (socre[i] * grade[i]) 의 값을 계속 더하여 넣어준다.
7. 학점도 따로 sumGrade에 계속 더하여 넣어준다.
8. 반복문이 끝나고, avg = avg / sumGrade를 하여 전공평점을 avg값에 넣어줌.
9. 출력부분을 보니 소수점 6자리로 제한
10. fixed와 precision(6)을 이용하여 소수점 6자리로 제한하여 출력.
● 구현
#include <iostream>
using namespace std;
int main() {
string majorName;
double avg = 0;
float sumGrade = 0;
double score[20];
float grade[20];
string input;
for (int i = 0; i < 20; ++i) {
cin >> majorName >> grade[i] >> input;
if (input == "A+")
score[i] = 4.5;
else if (input == "A0")
score[i] = 4.0;
else if (input == "B+")
score[i] = 3.5;
else if (input == "B0")
score[i] = 3.0;
else if (input == "C+")
score[i] = 2.5;
else if (input == "C0")
score[i] = 2.0;
else if (input == "D+")
score[i] = 1.5;
else if (input == "D0")
score[i] = 1.0;
else if (input == "F")
score[i] = 0.0;
else if (input == "P") {
score[i] = 0.0;
grade[i] = 0;
}
avg += (score[i] * grade[i]);
sumGrade += grade[i];
}
avg /= sumGrade;
cout << fixed;
cout.precision(6);
cout << avg;
}
https://www.acmicpc.net/problem/25206
반응형