본문 바로가기
백준 알고리즘 코딩

[C언어] 백준 25206번 너의 평점은

by 1005_ 2025. 3. 30.

[ 문제 ]

[ 입력 ]

[ 출력 ]

[ 제한 ]

 

[ 작성한 코드 ]

#include <stdio.h>

int main()
{
    int i;
    char ob[51]; // 과목이름
    char grade[3]; // 등급
    float credit; // 학점
    float sum_credit = 0; //학점의 총합
    float temp = 0; // 등급을 과목 평점으로 변환한 값
    float multiple = 0; // 학점 x 과목평점 값
    float res = 0;
    
    for(i = 0; i < 20; i++)
    {
        scanf("%s %f %s",ob,&credit,grade);
        
        if(grade[0] == 'P') continue;

        if(grade[0] == 'A'){
            if(grade[1] == '+') temp = 4.5;
            else temp = 4.0;
        }
        if(grade[0] == 'B'){
            if(grade[1] == '+') temp = 3.5;
            else temp = 3.0;
        }
        if(grade[0] == 'C'){
            if(grade[1] == '+') temp = 2.5;
            else temp = 2.0;
        }
        if(grade[0] == 'D'){
            if(grade[1] == '+') temp = 1.5;
            else temp = 1.0;
        }
        if(grade[0] == 'F')
        {
            temp = 0.0;
        }
        sum_credit += credit; // 총 학점 구하기
        multiple += temp * credit; // 학점 * 과목평점 구하기
        
    }
    
    // 학점이 0인경우를 위해
    if(sum_credit == 0){
        printf("0.0000\n");
    }
    else{
        res = multiple / sum_credit;
        printf("%.4f\n",res);
    }

    return 0;
}

 

주어진 조건에 맞게 등급별로 학점을 구분할 수 있도록 조건문을 작성하고, P등급일때는 계산이 이루어지지 않아야하므로 continue로 넘어갈 수 있게끔했다.

마지막 평균학점을 출력할때는 학점이 0일때를 위해 조건문을 하나 작성했다.

 

문제를 어떻게 풀어야하나 구상할 때 주어진 조건을 최대한 활용해 코드를 어떻게 짤지 세세하게 생각했다.

처음 문제를 풀었던 것 처럼 생각없이 바로 문제를 풀면 실수가 많을 것 같아서 구상하는데 시간을 많이 사용했다.

또한 변수가 생각보다 많이 필요해 코드 작성과 수정시에 헷갈리지 않도록 주석을 최대한 자세하게 작성했다.

 

알고리즘 분류

  • 수학
  • 구현
  • 문자열