학습(0)/C++ 문제풀이
등수 매기
누가 뭐래도 개발자
2025. 3. 18. 00:58
pair, map을 활용하는 문제는 어렵지 않은데, 자주 막히는 부분은 수학적 사고와 관련된 부분 같다.
많이 풀어보고 사고해야 실력이 발전한다.
사고를 하는 과정을 거치지 않으면 얻을 수 있는 걸 얻지 못하고 문제를 버리는거야.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<vector<int>> score) {
vector<int> answer(score.size());
vector<pair<double, int>> avg; //average, idx
avg.reserve(10);
for (int i = 0; i < score.size(); ++i)
{
avg.push_back({ (double)(score[i][0] + score[i][1])/2.0, i});
}
sort(avg.begin(), avg.end(), [](const auto& a, const auto& b) {return a.first > b.first; });
int rank = 0;
int count = 0; //공동 등수
for (int i = 0; i < avg.size(); ++i)
{
if (avg[0] != avg[i] && avg[i].first == avg[i - 1].first)
{
++count;
}
else
{
++rank += count;
count = 0;
}
answer[avg[i].second] = rank;
}
return answer;
}