[ 문제 ]
[ 입력 ]
[ 출력 ]
[ 제한 ]
[ 작성한 코드 ]
#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일때를 위해 조건문을 하나 작성했다.
문제를 어떻게 풀어야하나 구상할 때 주어진 조건을 최대한 활용해 코드를 어떻게 짤지 세세하게 생각했다.
처음 문제를 풀었던 것 처럼 생각없이 바로 문제를 풀면 실수가 많을 것 같아서 구상하는데 시간을 많이 사용했다.
또한 변수가 생각보다 많이 필요해 코드 작성과 수정시에 헷갈리지 않도록 주석을 최대한 자세하게 작성했다.
알고리즘 분류
- 수학
- 구현
- 문자열
'백준 알고리즘 코딩' 카테고리의 다른 글
[C언어] 백준 8958번 OX퀴즈 (0) | 2025.03.30 |
---|---|
[C언어] 백준 4344번 평균은 넘겠지 (0) | 2025.03.30 |
[C언어] 백준 2941번 크로아티아 알파벳 (0) | 2025.03.29 |
[C언어] 백준 10988번 팰린드롬인지 확인하기 (0) | 2025.03.29 |
[C언어] 백준 3003번 킹,퀸,룩,비숍,나이트,폰 (0) | 2025.03.29 |