25206번: 너의 평점은
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치
www.acmicpc.net
이 문제는 map(각 노드가 key와 value 쌍으로 이루어진 트리)을 사용하여 풀었다.
#include <iostream>
#include <cstring>
#include <map>
using namespace std;
int main() {
map <string, double> scr;
scr["A+"] = 4.5; scr["A0"] = 4.0;
scr["B+"] = 3.5; scr["B0"] = 3.0;
scr["C+"] = 2.5; scr["C0"] = 2.0;
scr["D+"] = 1.5; scr["D0"] = 1.0;
scr["F"] = 0;
double sumOfscr = 0, sumOfcrd = 0, crd;
string sub, rat;
for (int i = 0; i < 20; i++) {
cin >> sub >> crd >> rat;
if (rat[0] == 'P') { continue; }
sumOfscr += crd * scr[rat];
sumOfcrd += crd;
}
cout << sumOfscr/sumOfcrd;
return 0;
}
이 문제를 봤을때 파이썬의 딕셔너리가 떠올랐다. 하지만 c++의 자료형에는 딕셔너리가 없다는 것을 알고있었고, 비슷한 템플릿을 찾다가 map이란 컨테이너를 발견하게 되었다.
map은 트리로 구현되있다 보니 시간복잡도 측면에서 이득을 볼 것같아 사용하였다.
'CodingTest > 백준' 카테고리의 다른 글
[c++] 백준 - 2816: 디지털 티비 (0) | 2023.05.20 |
---|---|
[c++] 백준 - 2621: 카드게임 (0) | 2023.05.19 |
[c++] 백준 - 1316: 그룹 단어 체커 (0) | 2023.05.16 |
[c++] 백준 - 1652: 누울 자리를 찾아라 (1) | 2023.05.10 |
[c++] 백준 - 10812번: 바구니 순서 바꾸기 (0) | 2023.05.10 |