백준

백준 25206번: 너의 평점은 (C언어)

NamDoHyeon 2023. 7. 30. 16:15

백준 25206번: 너의 평점은 링크

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

문제를 풀기 전 생각한 것

등급을 입력받아 과목 평점으로 바꾸기
1 ≤ 과목명의 길이 ≤ 50

풀면서 어려웠던 점

처음엔 등급을 하나씩 비교하며 전공 평점을 구하려고 했다
하지만 코드가 길고 복잡해졌고 오류도 많았다
그래서 배열에 처음 들어오는 등급으로 소수점 앞부분을 먼저 구하고
그다음에 들어오는 +를 받아서 0.5를 더하는 방식으로 풀었다

코드

#include <stdio.h>

int main(void) 
{
    double score;
    char subject[50];
    char major[2];

    double ans, sumScore, majorScore = 0.0;

    for (int i = 0; i < 20; i++){
        scanf("%s %lf %s", subject, &score, major);

        if (major[0] == 'P') {
            continue;
        } 
        sumScore += score;
        if (major[0] == 'F') {
            continue;
        }
        else if (major[0] == 'A') {
            majorScore = 4;
        }
        else if (major[0] == 'B') {
            majorScore = 3;
        }
        else if (major[0] == 'C') {
            majorScore = 2;
        }
        else {
            majorScore = 1;
        }
        if (major[1] == '+') {
            majorScore += 0.5;
        }
        ans += score * majorScore;
    }

    printf("%lf", ans / sumScore);

    return 0;
}

풀면서 배운 점

다른 방식으로 접근해도 좋을 것 같다

반응형