https://www.acmicpc.net/problem/25206
25206번: 너의 평점은
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치
www.acmicpc.net
풀이
#include <stdio.h>
// 입력부분에서 과목명,학점, 등급을 보고 구조체 사용을 알아채야함
struct score {
char sn[51]; // 과목명
double n; // 학점
char gr[3]; // 등급
};
int main() {
struct score ch; // 치훈이
double avr; // 전공평점
double grn; // 과목평점
double total = 0, nsum = 0; // 전공과목별 합, 학점총합
for (int i = 0; i < 20; i++) { // 20과목 반복
grn = 0; // 과목평점 초기화
scanf("%s %lf %s", &ch.sn, &ch.n, &ch.gr); // 입력
if (ch.gr[0] == 'A') { // 등급이 A이상일때
grn = 4.0; // 과목평점은 4점
if (ch.gr[1] == '+') grn += 0.5; // A+이라면 +0.5
}
else if (ch.gr[0] == 'B') {
grn = 3.0;
if (ch.gr[1] == '+') grn += 0.5;
}
else if (ch.gr[0] == 'C') {
grn = 2.0;
if (ch.gr[1] == '+') grn += 0.5;
}
else if (ch.gr[0] == 'D') {
grn = 1.0;
if (ch.gr[1] == '+') grn += 0.5;
}
else if (ch.gr[0] == 'F') grn = 0; // F일때 0
// 등급이 P가 아닐때(P라면 계산에서 제외해야함)
if (ch.gr[0] != 'P') {
// 전공과목별 합 = 학점*과목평점
total += ch.n * grn;
nsum += ch.n; // 학점 총합
}
}
avr = total / nsum; // 전공평점 = 전공과목합/학점총합
printf("%lf\n", avr); // 전공평점 출력
return 0;
}
'코딩 > 백준 문제 (실버)' 카테고리의 다른 글
[백준/1181/C언어] 단어 정렬 _ 풀이 (0) | 2023.09.01 |
---|---|
[백준/11650/C언어] 좌표 정렬하기 _ 풀이 (0) | 2023.09.01 |
[백준/2941/C언어] 크로아티아 알파벳 _ 풀이 (0) | 2023.08.23 |
[백준/2563/C언어] 색종이 _ 풀이 (0) | 2023.08.22 |
[백준/1316/C언어] 그룹 단어 체커 _ 풀이 (0) | 2023.08.21 |