1 분 소요

문제

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

치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.

전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.

인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.

image

P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.

과연 치훈이는 무사히 졸업할 수 있을까?


입력과 출력

입력

20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.

출력

치훈이의 전공평점을 출력한다.

정답과의 절대오차 또는 상대오차가 10^-4 이하이면 정답으로 인정한다.


풀이 과정

간단하게 switch문을 이용하여 등급을 double형으로 바꾸어 계산해주면 된다.

등급이 P일 경우는 계산하지 않았다.

전체 코드

class Program
{
    static void Main(string[] args)
    {
        double total = 0;           // 학점 X 과목 평점의 총합
        double totalCredit = 0;     // 학점의 총합

        for (int i = 0; i < 20; i++)
        {
            string[] grade = Console.ReadLine().Split(' ');

            // 등급이 P일 경우 제외
            if (grade[2] == "P") continue;

            // 과목별 학점
            double credit = double.Parse(grade[1]); 

            total += credit * ChangeGrade(grade[2]);
            totalCredit += credit;
        }

        Console.WriteLine(total / totalCredit);
    }

    static double ChangeGrade(string grade)
    {
        switch (grade)
        {
            case "A+":
                return 4.5;
            case "A0":
                return 4.0;
            case "B+":
                return 3.5;
            case "B0":
                return 3.0;
            case "C+":
                return 2.5;
            case "C0":
                return 2.0;
            case "D+":
                return 1.5;
            case "D0":
                return 1.0;
            case "F":
                return 0;
            default:
                return 0;
        }
    }
}

댓글남기기