문제링크 : https://www.acmicpc.net/problem/25206
25206번: 너의 평점은
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
map<string, float>m; //map으로 미리 등급에 따른 점수를 저장
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
m["A+"] = 4.5; m["A0"] = 4.0;
m["B+"] = 3.5; m["B0"] = 3.0;
m["C+"] = 2.5; m["C0"] = 2.0;
m["D+"] = 1.5; m["D0"] = 1.0;
m["F"] = 0.0;
float score_sum = 0;
float sum = 0;
string s; float score; string grade;
for(int i=0; i<20; i++)
{
cin >> s >> score >> grade;
if(grade=="P") continue; //P인 경우 계산에서 제외
sum += score * m[grade]; //전공 평점 합
score_sum += score; //학점 합
}
cout << fixed << setprecision(6); //소수점 여섯자리까지 출력
cout << sum/score_sum;
return 0;
}
map으로 미리 등급에 따른 점수를 저장해놓고 시작했다.
이후 전공 평점 합과 학점을 따로 더하여 나눠서 출력하면 된다.
여기서 주의해야 할 것인 P인 경우는 계산에서 아에 제외시키는 것이다.
추가로 예제 출력이 소수점 여섯자리까지여서 여섯자리까리 출력이 되도록 해주었다.
map 말고 단순 반복문 노가다로도 풀 수 있지만 map이 훨씬 깔끔한 것 같다.
'백준 > 실버' 카테고리의 다른 글
[백준 5046번] 전국 대학생 프로그래밍 대회 동아리 연합 (C++) (0) | 2023.08.01 |
---|---|
[백준 14569번] 시간표 짜기 (C++) (0) | 2023.08.01 |
[백준 1158번] 요세푸스 문제 (C++) (0) | 2023.07.31 |
[백준 28138번] 재밌는 나머지 연산 (C++) (0) | 2023.07.30 |
[백준 16173번] 점프왕 쩰리 (Small) (C++) (0) | 2023.07.28 |