코딩/백준 문제 (실버)

[백준/25206/C언어] 너의 평점은 _ 풀이

룻밤 2023. 8. 29. 21:30

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;
}