반응형

 

● 문제 접근 과정

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

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

 

반응형

+ Recent posts